Windows SDK中的示例在调试配置中工作,在发布中失败。怎么可能?

时间:2014-04-15 20:56:52

标签: c++ visual-c++ com

示例:http://msdn.microsoft.com/en-us/library/windows/desktop/dd940359%28v=vs.85%29.aspx

当我在Debug配置中构建它时,一切都很好。

当我在Release配置中构建它时,我无法注册它。当我打电话

regsvr32 ExplorerCommandVerb.dll

它说:

The module "ExplorerCommandVerb.dll" was loaded
but the entry-point DllRegisterServer was not found.

Make sure that "ExplorerCommandVerb.dll" is a valid
DLL or OCX file and then try it again.

我的配置:Windows 8.1 64位上的Microsoft Visual Studio 2013。 Windows 7 32位也是如此。

2 个答案:

答案 0 :(得分:2)

该项目的发布版本中缺少设置。不确定它是否由转换过程引起,但我可以按照描述重现问题。

发布版本中未指定模块定义文件。选择ExplorerCommandVerb Project ,在解决方案下一级,然后选择“属性”。选择Linker,然后选择左侧属性树中的Input,然后选择右侧的Module Definition File。在调试模式下,它显示为Dll.def,而在Release模式下则丢失。只需将设置复制到发布模式,它就会按预期工作。

答案 1 :(得分:0)

发现问题:由于某种原因,它没有使用包含在项目中的Dll.def文件。我强迫它将此文件与链接器选项一起使用,现在它可以正常工作。