我正在为内部应用程序使用开源项目。 它是楔形文字 linux ocr 引擎。 当我在 Debug模式下构建它时,构建工作完美。 发布版本卡在一些图像上,没有任何反馈。
是否可以更改编译器标志,发布版本使用调试版本代码? 我尝试在代码中编辑 ifdef 和 ifndef 配置,但没有成功。
我是一名 C# 开发人员,只有 C++ 的基本技能。
我想使用发布版本的主要事实是安装它的服务器应该只使用 msvc++ 运行时。调试 dll 仅由 visual studio 安装提供。
问候 英戈
最佳答案
这是不可取的。在这种情况下(Debug 运行良好,Release 未运行),它往往会下降到某处未初始化的变量。在整个代码中放置断言是一种很好的做法,它可以作为开发人员的健全性检查(断言通常不作为发布构建的一部分进行编译,但它们是调试构建的一部分)来检查此类情况。
调试版本将包含许多额外的符号信息以及代码中更严格的值分配,以确保调试器可以 Hook 它。这有时会缓解此类问题,因为编译器会为调试器正确初始化变量,如果未正确初始化的变量会产生未定义的行为(有时这种未定义的行为对于程序执行来说是非常致命的!)。因此,当调试版本运行时,发布版本无法运行。
关于c++ - visual c++ 强制发布构建使用调试构建代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39741142/