2010-05-23 57 views
1

当我尝试注册使用regsvr32创建的.dll时,出现奇怪的问题。未能使用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“的调试版本没有(功能视图显示soem函数,通常应该在ole32.dll中),它是红色的。

到目前为止这么好,我猜它与某些依赖步行者在那里显示的内容有关。

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

谢谢!

回答

0

我修好了。它实际上是由我包含的某些mingw库的顺序造成的,它与ffmpeg链接。哦,多么奇怪。

+0

您是如何解决订购问题的?我想我可能会遇到一些与我正在加载的外部库有关的类似问题。 – funseiki 2012-11-02 15:59:51

0

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

+0

未设置。我试图将它作为一个定义添加,并且只是在它不再支持的情况下大吼大叫。这是VC08,猜测它是一个“老”的东西。没有看到UI选项。 – Hendrik 2010-05-23 16:30:25

+0

我的C++知识可能有点过时了......我建议比较其他项目选项并查看是否可以看到任何差异。特别是如果其中一个具有'/ MD'或'/ MT'或类似的,而另一个则不是。最容易比较的是如果您查看属性中的“命令行”页面。 – 2010-05-23 16:53:15

+0

这是我的想法,我有另一个项目,我基于这一个,并且设置是相同的,但那个工程。 也许某些奇怪的指令是通过某个头部某个地方导入的? 如果有人更习惯于依赖walker和喜欢,我可以提供编译的.dll。 – Hendrik 2010-05-23 17:05:31

2

我有同样的问题。当我比较Release和Debug模式下的“命令行”(在项目属性 - >链接器中)之间的不同之处时,我发现释放模式的“优化”选项(在项目属性 - >链接器中)不。 释放模式下链接器优化的车削解决了问题