我有一个用未管理的 C++ 编写的 COM DLL,并使用 VS 2010 编译。我可以使用 regsvr32 注册 DLL,并且可以通过 VBscript 调用它。
当我尝试添加对它的引用时,在创建 C# 客户端时,我没有看到添加引用 -> COM 选项卡中列出的 COM 对象。如果我手动浏览到 DLL 并尝试选择它,它会说 DLL 不是有效的 assmlby 或 COM 组件。
现在,我可以使用 tlbimp 工具生成一个互操作 DLL,并使用它作为对我的 C# 客户端的引用。一切正常。
我的问题是:
- 为什么通过 regsvr32 注册的原始 COM 未在添加引用对话框的 COM 选项卡中列出?
- 当我可以从 VBScript 和 C++ 本机代码调用它时,为什么 VS IDE 认为它不是一个有效的 COM?
- tlbimp 到底做了哪些 IDE 不能做的事情?
- 我需要进一步阅读什么来提高我对类型库和互操作性的理解?