c++ - visual c++ 强制发布构建使用调试构建代码

标签 c++ visual-studio visual-c++ ocr

我正在为内部应用程序使用开源项目。 它是楔形文字 linux ocr 引擎。 当我在 Debug模式下构建它时,构建工作完美。 发布版本卡在一些图像上,没有任何反馈。

是否可以更改编译器标志,发布版本使用调试版本代码? 我尝试在代码中编辑 ifdef 和 ifndef 配置,但没有成功。

我是一名 C# 开发人员,只有 C++ 的基本技能。

我想使用发布版本的主要事实是安装它的服务器应该只使用 msvc++ 运行时。调试 dll 仅由 visual studio 安装提供。

问候 英戈

最佳答案

这是不可取的。在这种情况下(Debug 运行良好,Release 未运行),它往往会下降到某处未初始化的变量。在整个代码中放置断言是一种很好的做法,它可以作为开发人员的健全性检查(断言通常不作为发布构建的一部分进行编译,但它们是调试构建的一部分)来检查此类情况。

调试版本将包含许多额外的符号信息以及代码中更严格的值分配,以确保调试器可以 Hook 它。这有时会缓解此类问题,因为编译器会为调试器正确初始化变量,如果未正确初始化的变量会产生未定义的行为(有时这种未定义的行为对于程序执行来说是非常致命的!)。因此,当调试版本运行时,发布版本无法运行。

关于c++ - visual c++ 强制发布构建使用调试构建代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39741142/

相关文章:

c++ - Win32/C++ 内存泄漏

c++ - 如何将参数传递给函数?

visual-studio - 如何将Visual Studio配置为使用代码 View 作为Web服务的默认 View ?

visual-studio - Nuget 的最佳实践 : Debug or Release?

visual-c++ - 如何中止使用 wininet 发送的请求?

c++ - PPL:线程池的初始化

c++ - Ada 中的 placement new 相当于什么?

visual-studio - 防止 Visual Studio 从引用的项目中删除输出文件

windows - 创建新进程后是否需要使用 CloseHandle?

c++ - 为什么即使在 VS 调试器外部启动的程序也无法调用终止方法?