在 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 接口创建 pointer/allocate 内存,此时方法失败(记录错误):

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选项