无法向regsvr32注册.dll-仅在发行版中

问题描述 投票:1回答:4

尝试注册使用regsvr32创建的.dll时出现了一个奇怪的问题。

在开发过程中一切正常,调试版本注册并正常工作。现在,我想创建一个发行版本,但是该版本不再注册。

regsvr32出现以下错误:

The module "mpegsplitter.dll" failed to load.

Make sure the binary is stored at the specified path or
debug it to check for problems with the binary or
dependent .DLL files.

The specified procedure could not be found.

一些研究使我进入了依赖行者,这确实告诉了我

Error: At least one module has an unresolved import due to a missing export function in an implicitly dependent module.

它也显示了调试版本所不具有的对“ crtdll.dll”的依赖关系(功能视图显示通常应在ole32.dll中的soem函数),其颜色为红色。

到目前为止,到目前为止,我想它与某种程度上的依赖项遍历显示有关。

但是我从这里去哪里?我如何解决它?任何帮助将不胜感激,这已经让我忙了几个小时。

谢谢!

visual-c++ dll regsvr32 dllregistration
4个回答
2
投票

我有同样的问题。当我比较发行版的“命令行”(在项目属性->链接器中)和调试模式之间的差异时,我发现离子调试时,发行版的“优化”选项(在项目属性->链接器中)处于打开状态不。在释放模式下优化链接器可以解决问题


0
投票

是否有可能使用_ATL_MIN_CRT编译调试版本,但不是发布版本?您也可以使用Minimize CRT Use in ATL项目属性进行设置。


0
投票

我修复了它。这实际上是由于我包含的一些针对ffmpeg的mingw库的顺序引起的。哦,好奇怪。


0
投票

就我而言,区别在于DEBUG和RELEASE之间的Module Definition File条目。 DEBUG版本指向.DEF文件,而RELEASE将其清空。

© www.soinside.com 2019 - 2024. All rights reserved.