发布模式下无法为 COM 组件创建 ActiveX 组件(VS2010 特定)
Posted
技术标签:
【中文标题】发布模式下无法为 COM 组件创建 ActiveX 组件(VS2010 特定)【英文标题】:ActiveX component cannot be created for COM component in release mode (VS2010 specific) 【发布时间】:2012-12-21 00:00:04 【问题描述】:我在 VS2008 中有一个 ATL COM 组件(.exe) (VC++)。通过VB6客户端,我使用CreateObject获取对象。
但是一旦组件更新到 VS2010 SP1,VB6 客户端就不能再创建 COM 对象了。
如果我在调试模式下编译 VS2010 COM 组件并获得 .exe,VB6 客户端工作正常。 在发布模式下,生成.exe没有任何错误,VB6客户端失败,提示无法创建ActiveX组件。
请帮我解决这个问题。
【问题讨论】:
您在调试您的 EXE COM 服务器的发布版本时看到了什么?有什么东西可以到达你吗?你应该至少能看到一些东西,然后从那里开始。 我的水晶球说您正在另一台机器上测试发布版本。没有安装 C++ 运行时支持 DLL。 进一步分析,我能够调试 Project.cpp Main 方法。在调试模式下,“_Module.RegisterClassObjects”运行顺利。但在发布模式下,它进入 atlcom.h 中的另一个方法 'CreateInstance' 并失败 @'p->_AtlInitialConstruct();' .希望有人能说出为什么会发生这种情况或项目设置中的任何错误。 【参考方案1】:找出 COM 拒绝创建某个 CoClass 实例的原因确实是一个 PITA。你得到的只是一些通用的错误代码,对你没有多大帮助。如果您通过 Dlls 使用运行时库,您应该检查是否可以在调试器之外找到这些库。我使用 COM/OLE 查看器检查是否可以创建 CoClass 的对象,以便排除问题与 VB 有关。 祝你好运。
斯图尔特
【讨论】:
我在我正在调用的构造函数的第一行添加了一个 msgbox,MessageBoxW( NULL,(LPCWSTR)L"paused",(LPCWSTR)L"paused",MB_OK );但它不会在发布模式下被击中。这在我的机器上也失败了,exe没有启动,因此我无法调试。以上是关于发布模式下无法为 COM 组件创建 ActiveX 组件(VS2010 特定)的主要内容,如果未能解决你的问题,请参考以下文章
ActiveX 组件无法创建对象。 Excel VBA中的搭扣
ActiveX 组件无法创建对象:PCOMM.autECLConnList
使用 Excel VBA 创建 Word 应用程序:运行时错误“429”:ActiveX 组件无法创建对象
VBA CreateObject 无法在 64 位 Windows 上创建 ActiveX 组件