我正在尝试部署我的项目并创建一个安装程序。 我创建了一个.vdproj,它有一个输出setup.msi 运行.msi安装向导时,我收到错误:
“模块xyz无法注册.HRESULT -2147024769。请联系您的 支持人员。“
无法注册的模块是C ++ dll,而我的应用程序是WFF-C#应用程序。
有没有人知道这个问题的解决方案?
答案 0 :(得分:0)
错误为0x8007007F(十六进制),转换为Windows error code 127 (0x7F) ERROR_PROC_NOT_FOUND
。问题可能是因为proc DllRegisterServer(用于注册该程序集导出的COM类型的标准proc)不会被DLL导出。您可能需要register an associated typelib代替。
否则,请参阅类似LoadLibrary() error code 127的Stack Overflow上的类似问题。
答案 1 :(得分:0)
这可能有两个原因
您尝试注册的DLL(使用安装程序)不是activeX dll,因此不需要注册。标准dll不需要注册。您只需将其复制到系统文件夹或应用程序文件夹中即可。 您应该尝试从安装程序中删除那些试图注册所有
第二个共振可以像akron一样建议,你需要注册一个相关的类型lib而不是dll本身。
您可以使用dependency walker找出它是什么类型的dll以及与之链接的其他dll。
答案 2 :(得分:0)
安装程序抱怨它无法在DLL中找到导出的函数来注册它DllRegisterServer function。非常好的几率,你要求安装程序在它实际上不是COM服务器时注册DLL。并非每个C ++ DLL都是COM dll。大多数都没有。
您应该能够在代码中使用DLL的方式中看到这一点。您通常通过添加对DLL或类型库的引用来使用COM dll,并且您的构建目录中将有一个Interop.Foo.dll程序集。相反,您在代码中使用带有[DllImport]属性的非COM dll。
将DLL的“Register”属性更改回vsdrpDoNotRegister,然后重试。