我正在VS2005中构建一个项目,我的几个DLL都无法注册。我在Visual Studio中收到的错误消息是:
项目:错误PRJ0019:工具从“注册ActiveX控件...”
返回错误代码
这很模糊。当我通过命令行手动注册DLL时(使用regsv32.exe
,我收到以下错误:
LoadLibrary(“test.ocx”)失败 - 此应用程序无法启动,因为应用程序配置不正确。重新安装应用程序可能会解决问题。
我在罪魁祸首.ocx文件上运行了Dependency Walker(depends.exe
),但它没有显示任何明显的问题。
我也做了重建,但我仍然遇到同样的问题。
有关如何确定注册失败原因的任何建议?
答案 0 :(得分:3)
最有可能是因为嵌入式清单。您应该使用资源浏览器应用程序并检查您的DLL以获取嵌入的清单。可能是其中一个依赖DLL(或您的DLL)需要某些版本的其他不存在的DLL。
我收到此消息:“此应用程序无法启动,因为应用程序配置不正确。”如果嵌入了明显的错误匹配。
答案 1 :(得分:3)
微软最近发布了ATL安全更新(KB971090)。它是在MSVS2005sp1之上更新的,它既是compilate-time又是运行时兼容性的破坏者。检查您的建筑环境是否有此补丁。
参考文献:
答案 2 :(得分:2)
解决这一类问题的最简单方法可能是安装Process Monitor from microsoft.com。
Process Montior让您可以观察正在进行的系统调用,在这种情况下,您将能够看到某些系统调用是否失败。例如,如果您缺少依赖项,那么将看到CreateFile()调用失败,并使用DLL,OCX等作为文件名。
启动procmon并配置过滤器以排除regsvr32.exe以外的事件,重现测试用例,然后检查日志。在返回值列中查找NAME_NOT_FOUND错误。
答案 3 :(得分:1)
答案 4 :(得分:0)
您可以尝试以下几种方法: