当从一个应用程序调用时,在DLL方法中创建COM接口指针是有效的,但当从另一个应用软件调用时则无效
Creating COM interface pointer in DLL method works when called from one application but does not when called from another application
我正在使用COM互操作从C++dll调用C#dll中的方法。C++dll是从另一个对我来说本质上是黑匣子的应用程序调用的(例如,我看不到它的任何代码。)
当该应用程序调用C++dll中的方法时,它将按预期执行,直到尝试创建指向C#COM接口的指针/分配内存,此时该方法失败(记录错误):
TJIntegration::ITJInterfacePtr tJPtr = NULL;
HRESULT hRes = tJPtr.CreateInstance(__uuidof(TJIntegration::TJInterface));
if (!(SUCCEEDED(hRes)))
{
LOG_ERROR << "Could not create pointer for TJInterface. Has the COM DLL been registered?";
}
然而,我已经创建了一个测试应用程序,它也调用这个dll,并且该方法完全按预期执行,包括创建这个指针。
我正在同一台机器上测试这些应用程序(dll注册的地方),所以我不明白为什么从一个应用程序调用该方法时会正常工作,但从另一个应用软件调用时会失败?
事实证明,当使用regasm注册dll时,我需要使用/codebase
选项。
相关文章:
- 如何使用接口指针调用方法,该指针是其具体类的一部分,而不是接口的一部分
- Java(或C++)如何处理接口中定义的方法的调用
- 为什么在将多态行为与指向接口的指针一起使用时没有调用析构函数?
- 是否可以从C 调用FORTRAN接口
- iwlist 在使用 execl 调用时尝试扫描所有接口
- 从多个不同的实现类 c++ 调用接口函数
- 创建接口和混凝土类并在向量中使用它们会导致调用方法时的怪异行为
- 在没有包装程序类的情况下,在ActiveX接口上调用方法
- 正在接口构造函数中调用重写的接口方法
- 当从一个应用程序调用时,在DLL方法中创建COM接口指针是有效的,但当从另一个应用软件调用时则无效
- 从 C# 如何调用需要 *VARIANT 参数的非托管 OLE 接口
- 统一功能使用模板专业化和接口来调用实例和原始类型
- 可以通过跨二进制边界传递的对象上的接口调用虚拟函数吗?
- 在继承的接口中调用自定义代码
- 使用Classloader创建的对象无接口调用或反映Invoke
- 我的C++应用程序如何调用驱动程序的接口
- 无法更改调用接口时的initialize数组
- C++程序在调用C#接口时接收HOST_E_CLRNOTAVAILABLE
- 在VS2012中调用接口方法导致指针不完整
- 从未知的派生类调用接口函数(多重继承)