尝试在C ++中使用托管COM组件时未注册的类

时间:2017-01-31 18:06:47

标签: c# c++ com

我创建了一个导出COM组件的C#程序集。我试图像这样在C ++中使用它:

#include "stdafx.h"
#import <mypath\WCFClient.tlb> named_guids raw_interfaces_only

using namespace WCFClient;

int main()
{
    CoInitialize(NULL);
    IWCFClientPtr pWCFClient;

    HRESULT hRes = pWCFClient.CreateInstance(CLSID_WCFCOMClient);
... etc ...
}

CreateInstance正在返回REGDB_E_CLASSNOTREG Class not registered

1)我的C#程序集设置为x86编译,我的C ++应用程序设置为Win32编译,虽然我也尝试过x64。

2)我可以看到我的CLSID HKCR \ WOW6432Node \ CLSID(或尝试x64时为HKCR \ CLSID)。装配信息和路径是正确的。

3)生成的.tlh文件中的CLSID_WCFCOMClient是正确的。它是我在注册表中找到的CLSID。

在编译C ++应用程序之前,我正在运行regasm WCFClient.dll /codebase /tlb:WCFClient.tlb,这是我正在编译的位数的合适的,虽然这是不必要的,因为C#项目在构建时注册自己。它记录了适当的位数。

我有什么遗漏的吗?

0 个答案:

没有答案