2

我有一个 C# 库,用于非托管 C++ 代码中的 COM 对象。我使用 Visual Studio 的复选框“Register For Com Interop”注册了库,并将 ComVisible 设置为 true。

将 tlb 导入到 C++ 应用程序中......当我运行它时,我得到一个“未注册的类”......

这以前有效,但是在我将 C# 项目的目录移动到不同的位置后开始发生这种情况......是的,我在移动它后确实重新注册了库。

我已经从注册表中删除了所有引用...我什至尝试在其上执行 gacutil.exe /i...没有骰子。

有人知道怎么修这个东西吗?

4

2 回答 2

0

如果您没有在托管对象上设置显式 CLSID,则移动和重建可能会生成新的 CLSID。确保您的非托管项目没有类型库的陈旧副本。

转到 HKCR\CLSID\{XXXX} 并确保托管对象的类注册指向正确的托管 dll。

于 2009-09-09T18:07:27.153 回答
0

在托管代码中使用非托管对象的更好方法是使用 C++/CLI。您可以轻松地围绕本机对象创建托管包装器。

于 2009-09-09T18:07:51.833 回答