|
|
|
|
|
|
|
Delphi 2
Интерфейс OLE AutoServer
Я пытаюсь создать in-process oleserver с возможностью обратного вызова (callback).
Я хочу передавать мой ole-объект MS C++ dll так, чтобы DLL могла бы вызываться из сервера.
Проблема в том, что dll "вылетает", если мой сервер - Delphi 2.0, но работает в VB 4.0
Проблема в том, что вы передаете со стороны Delphi Variant, но на стороне C++ "ожидают" IUnknown. Измените прототип функции Delphi следующим образом:
|
function SmtOleLink(OleCallBack: IUnknown; ...) ...;
|
Для получения доступа к типу IUnknown необходимо добавить "Ole2" к списку используемых модулей. Теперь измените вызов со стороны Delphi:
|
SmtOleLink(VarToInterface(MyObject), 16, 0);
|
Функция "VarToInterface" (определенная в модуле OleAuto) извлекает указатель IDispatch из Variant (или возбуждает исключение, если Variant не содержит ссылки на объект OLE Automation).
Это должно сработать.
- Anders Hejlsberg [000885]
|
|
|
|
|
Материалы, которые находятся на этой страничке, любезно предоставлены Игорем Ивановым
|
|
| © 2007 APTEM.NET.RU Все права защищены |