在DLL方法中创建COM接口指针在从一个应用程序调用时起作用,但在从另一个应用程序调用时不起作用

时间:2017-10-17 18:12:29

标签: c# c++ visual-studio com

我正在使用COM interop从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已注册的地方),所以我无法理解为什么该方法在从一个应用程序调用时可以正常工作,但此时从另一个应用程序调用时失败? / p>

1 个答案:

答案 0 :(得分:0)

事实证明,当使用regasm注册dll时,我需要使用/codebase选项。