Проблема в том, что вы передаете со стороны 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]