1 / 1 / 0
Регистрация: 13.09.2012
Сообщений: 29

клиент на VS++ 2010 сервер на RAD Studio C++Builder

19.11.2012, 13:39. Показов 4560. Ответов 30
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пытаюсь осуществить работу автоматизации между сервером, написанным на RAD Studio ХЕ C++Builder, и клиентом, написанным на VS++ 2010.
Сервер, "MyApp.exe", зарегистрировался в реестре. Имеет один метод "TestMethod1()", его хочу запустить из клиента.
В клиенте делаю:

C++ (Qt)
1
2
3
CoInitialize(NULL);
CLSID clsid;
HRESULT hr = CLSIDFromProgID(L"MyApp.App", &clsid); // здесь все нормально
А вот дальше что делать?
Надо ли добавлять #include "MyApp_TLB.h" (это сгенерировал C++Builder), что бы знать методы сервера?. Пробовал это сделать, но по цепочке требуется добавлять еще кучу include *.h.
Этот "MyApp_TLB.h" файл, я так понимаю, нужен для определения интерфейса моего сервера и его свойств и методов. А без указания этого файла нельзя обойтись?
Просмотрел кучу инфы в инете по COM, но в голове уже каша. В основном приводятся примеры, где и клиент и сервер в VC++.
В общем, прошу помощи.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.11.2012, 13:39
Ответы с готовыми решениями:

С++ Builder Клиент-Сервер, RAD Studio XE5
Здравствуйте. Создаю приложение "Клиент-Сервер". Прочитал много статей на форумах, как можно это реализовать, но не чего полезного для RAD...

Компоненты из Builder 6 в RAD Studio 2010
Доброго времени суток! Столкнулся с такой проблемой! В приложении которое разрабатывалось уже давненько на Builder 6, используются два...

Установка библ. RxLib на RAD Studio 2010 (C++ Builder)
Здравствуйте! На 6-ом Билдере я запускал анимацию (.gif) с помощью очень удобного компонента RxGifAnimator библиотеки RxLib. Проблема...

30
Модератор
 Аватар для vxg
3403 / 2174 / 353
Регистрация: 13.01.2012
Сообщений: 8,430
22.11.2012, 16:43
Author24 — интернет-сервис помощи студентам
в плане обмена мнениями - чем вы делали TLB?
0
1 / 1 / 0
Регистрация: 13.09.2012
Сообщений: 29
22.11.2012, 16:43  [ТС]
vxg, а ты не пробовал передавать в процедуру параметр своего типа? Возможно вообще такое?
0
Модератор
 Аватар для vxg
3403 / 2174 / 353
Регистрация: 13.01.2012
Сообщений: 8,430
22.11.2012, 16:44
не пробовал. но по идее все должно работать при наличии TLB
0
1 / 1 / 0
Регистрация: 13.09.2012
Сообщений: 29
22.11.2012, 16:45  [ТС]
Цитата Сообщение от vxg Посмотреть сообщение
в плане обмена мнениями - чем вы делали TLB?
я сервер пишу в borlande. там за это отвечает специальный мастер. TLB компилируется вместе с проектом
0
Модератор
 Аватар для vxg
3403 / 2174 / 353
Регистрация: 13.01.2012
Сообщений: 8,430
22.11.2012, 16:48
я тоже на BC++ пишу, однако не использую мастера. пришлось собирать TLB по IDL файлу при помощи MIDL который выдернул из VC98
0
1 / 1 / 0
Регистрация: 13.09.2012
Сообщений: 29
22.11.2012, 16:49  [ТС]
Цитата Сообщение от vxg Посмотреть сообщение
не пробовал. но по идее все должно работать при наличии TLB
Я тоже думаю, что можно.
Я хочу передать параметр типа мой класс. Попробовал передать, как int в котором записан указатель на объект класса. Но не прокатило.
0
Модератор
 Аватар для vxg
3403 / 2174 / 353
Регистрация: 13.01.2012
Сообщений: 8,430
22.11.2012, 16:53
не, так не прокатит, оно же маршаллировать должно

Добавлено через 1 минуту
вроде как можно передать структуру содержащую стандартные типы поддерживаемые COM в число которых входит в том числе указатель на интерфейс - то есть можно передавать указатель на объект из вашей программы другой

Добавлено через 51 секунду
а полноценный класс думаю без самостоятельного погружения в маршаллинг (если дорожите психикой не делайте этого) не передать.

Добавлено через 54 секунды
под полноценным имеется ввиду виртуальные функции, указатели и все такое.
0
1 / 1 / 0
Регистрация: 13.09.2012
Сообщений: 29
22.11.2012, 16:53  [ТС]
Цитата Сообщение от vxg Посмотреть сообщение
стандартные типы поддерживаемые COM
Вот сижу, пытаюсь через них передать...
0
Модератор
 Аватар для vxg
3403 / 2174 / 353
Регистрация: 13.01.2012
Сообщений: 8,430
22.11.2012, 16:55
на опыте - передавал именно только структуры из поддерживаемых COM типов. да, в эти типы входит и массив поддерживаемых элементов. только его нужно выделять и освобождать специальными функциями разделяющими память.
0
1 / 1 / 0
Регистрация: 13.09.2012
Сообщений: 29
22.11.2012, 16:58  [ТС]
контейнеры (vector, map) com не поддерживает?
0
Модератор
 Аватар для vxg
3403 / 2174 / 353
Регистрация: 13.01.2012
Сообщений: 8,430
22.11.2012, 17:03
отправляем
C++
1
2
3
4
                VARIANT *value = (VARIANT *)CoTaskMemAlloc
                (
                    items.size() * sizeof(VARIANT)
                );
получаем обрабатываем и удаляем
C++
1
                CoTaskMemFree(value);
или для более сложной структуры - отправляем
C++
1
2
3
4
    *ppServerStatus = (OPCSERVERSTATUS *)CoTaskMemAlloc
    (
        sizeof(OPCSERVERSTATUS)
    );
получаем обрабатываем удаляем
C++
1
    CoTaskMemFree(*ppServerStatus);
где
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
typedef struct tagOPCSERVERSTATUS
    {
    FILETIME ftStartTime;
    FILETIME ftCurrentTime;
    FILETIME ftLastUpdateTime;
    OPCSERVERSTATE dwServerState;
    DWORD dwGroupCount;
    DWORD dwBandWidth;
    WORD wMajorVersion;
    WORD wMinorVersion;
    WORD wBuildNumber;
    WORD wReserved;
    /* [string] */ LPWSTR szVendorInfo;
    }   OPCSERVERSTATUS;
Добавлено через 25 секунд
Цитата Сообщение от sia727 Посмотреть сообщение
контейнеры
нет - это же ммм полноценные классы)

Добавлено через 2 минуты
...если в структуру вложены динамически выделенные данные они должны выделяться и уничтожаться аналогично - все что динамическое нужно через эти функции тащить

Добавлено через 48 секунд
если уж надо объект предать наверное проще сделать его тоже COM

Добавлено через 1 минуту
...и передать указатель на него
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.11.2012, 17:03
Помогаю со студенческими работами здесь

Визуалка в Builder 2010 RAD Studio XE2, простенький блокнотик
Создаю простенкий блокнотик, возник вопрос как сделать банальное: Файл - --- Создать --- Открыть --- Сохр --- Сохр как ...

Работа с объектами в C++ Builder 2010 (RAD 2010)
Плавно перехожу на программирование в Builder, появляется очень много вопросов по работе со стандартными встроенными объектами (формами). ...

Delphi 2010 (RAD Studio 2010) критическая область
Подскажите, пожалуйста, как в Делфи 2010 создать критическую область? Делал так, но ничего не получилось var Form1: TForm1; ...

Какой компилятор C++ Builder использовать? Rad Studio 2009 глючит. C++ Builder 6 старый
Много раз замечал непонятки с компилятором. Масла в огонь подлил Какой посоветуете?

Visual Studio 2015 или Embarcadero RAD Studio 10.1 Berlin (C++ Builder)
Хочу "поковыряться" (так сказать пощупать его руками) в С++ вот и возник вопрос какую IDE выбрать Visual Studio 2015 или Embarcadero RAD...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Опции темы

Новые блоги и статьи
Безопасное программирование в Java и предотвращение уязвимостей (SQL-инъекции, XSS и др.)
Javaican 19.05.2025
Самые распространёные векторы атак на Java-приложения за последний год выглядят как классический "топ-3 хакерских фаворитов": SQL-инъекции (31%), межсайтовый скриптинг или XSS (28%) и CSRF-атаки. . .
Введение в Q# - язык квантовых вычислений от Microsoft
EggHead 19.05.2025
Microsoft вошла в гонку технологических гигантов с собственным языком программирования Q#, специально созданным для разработки квантовых алгоритмов. Но прежде чем погружаться в синтаксические дебри. . .
Безопасность Kubernetes с Falco и обнаружение вторжений
Mr. Docker 18.05.2025
Переход организаций к микросервисной архитектуре и контейнерным технологиям сопровождается лавинообразным ростом векторов атак — от тривиальных попыток взлома до многоступенчатых кибератак, способных. . .
Аугментация изображений с Python
AI_Generated 18.05.2025
Собрать достаточно большой датасет для обучения нейронной сети — та ещё головная боль. Часами вручную размечать картинки, скармливать их ненасытным алгоритмам и молиться, чтобы модель не сдулась при. . .
Исключения в Java: советы, примеры кода и многое другое
Javaican 18.05.2025
Исключения — это объекты, созданные когда программа сталкивается с непредвиденной ситуацией: файл не найден, сетевое соединение разорвано, деление на ноль. . . Список можно продолжать до бесконечности. . . .
Как сделать SSO (Single Sign-On) в C# приложении
stackOverflow 18.05.2025
SSO — это механизм, позволяющий пользователю пройти аутентификацию один раз и получить доступ к нескольким приложениям без повторного ввода учетных данных. Вы наверняка сталкивались с ним, когда. . .
Kubernetes с Apache Flink для обработки данных в реальном времени
Mr. Docker 17.05.2025
Kubernetes — это целая философия управления распределёнными приложениями. В отличие от "примитивных" решений вроде Docker Swarm, K8s (как его ласково называют в тусовке DevOps-инженеров) предлагает. . .
Использование декораторов в Python
py-thonny 17.05.2025
Если вы когда-нибудь задумывались о том, как красиво расширить функциональность кода без лишней возни и дублирования, декораторы в Python — та самая волшебная палочка, которую вы искали. По сути, это. . .
Реализация многопоточных сетевых серверов на Python
py-thonny 16.05.2025
Когда сталкиваешься с необходимостью писать высоконагруженные сетевые сервисы, выбор технологии имеет критическое значение. Python, со своей элегантностью и высоким уровнем абстракции, может. . .
C# и IoT: разработка Edge приложений с .NET и Azure IoT
UnmanagedCoder 16.05.2025
Мир меняется прямо на наших глазах, и интернет вещей (IoT) — один из главных катализаторов этих перемен. Если всего десять лет назад концепция "умных" устройств вызывала скептические улыбки, то. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru