【发布时间】:2011-10-02 19:01:15
【问题描述】:
为以下冗长的问题提前道歉;我是 COM 菜鸟。
场景:我需要call a managed DLL built with C# from native Visual C++ code。在我的本机 VC++ 代码中,我在注册“SomeDLL.dll”并使用 RegAsm.exe 生成“SomeDLL.tlb”文件后执行以下操作。
- 用
#import "SomeDLL.tlb"导入TLB文件 - 将 DLL 中定义的类
MyClass与CComPtr<MyClass>一起使用。
一切都很好!它可以编译,我可以运行代码等。当我尝试在另一台机器上运行此应用程序(即不是我编译它的机器)时,它很受欢迎。我复制了所有必需的 DLL,并使用RegAsm.exe 注册了相同的 DLL,但它不起作用。
当它尝试使用 CoInitialize(0) 初始化 COM 库并返回 S_FALSE 错误时,它特别失败,这意味着
COM 库已在此线程上初始化。
我可以自信地说我没有在我的代码中的任何其他地方调用过这个函数。
有什么建议吗?
【问题讨论】:
标签: windows visual-c++ dll com