Windows SDK中的示例在“调试”配置中有效,但在“发布”中失败.这怎么可能
Sample from Windows SDK works in Debug configuration, and fails in Release. How is that possible?
示例: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文件。我强迫它使用这个带有链接器选项的文件,现在它可以工作了。
相关文章:
- 链接阶段在Ubuntu上失败,但在MacOS上失败
- 换位表导致测试失败(但在游戏中运行良好)
- OpenCV Tracker 属性访问在 ARM 上因 SEGFAULT 而失败,但在 X86_64 中工作
- ostream_iterator运算符=在pair<int,int>上失败,但在包装器类上工作。我不能为成对<>重载运算符<<吗?
- 带有引用的std::tuple在clang中编译失败,但在gcc中编译失败
- 为什么这个来自 Objective-C++ 的dynamic_cast在调试中成功但在发布时失败?
- 驱动器号上的查找文件失败,但在路径上传递
- mkdir 从命令行工作,但在使用 NFS 时C++失败
- enable_if is_same constexpr函数使MSVC失败(但在Clang,GCC中效果很好)
- 写一个概念检查库,但在所有筹款算术类型上都失败了
- 在Java中生成RSA签名,但在C 中验证签名失败
- 为什么这段代码在Visual Studio中有效,但在gcc中失败
- Qt OpenGL帧缓冲在一台PC上创建,但在另一台PC上失败
- 在Windows 7下可以从C#调用C DLL,但在Windows 10下失败
- Ostream Tellp在Windows上失败,但在Linux上没有失败
- C++程序编译在 Ubuntu 中失败,但在 MacOSX 中工作
- 正则表达式传递正则表达式测试器,但在 qt 中失败
- 为什么将boost::move()的返回值分配给非常数引用在C++0x模式下失败,但在C++03模式下有效
- Regex在g++4.9下匹配,但在g++-5.1下失败
- Gtest:捕获输出,但在失败时打印