Windows SDK中的示例在“调试”配置中有效,但在“发布”中失败.这怎么可能

Sample from Windows SDK works in Debug configuration, and fails in Release. How is that possible?

本文关键字:但在 失败 怎么可能 有效 发布 调试 SDK Windows 配置      更新时间:2023-10-16

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

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

当我在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位上。

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

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

发现问题:由于某种原因,它没有使用项目中包含的Dll.def文件。我强迫它使用这个带有链接器选项的文件,现在它可以工作了。