2016-09-28 129 views
0

我正在使用一个开放源码项目工作的内部应用程序。 它是楔形的linux ocr引擎。 当我在调试模式下构建它时,构建完美。 发布版本挂在一些图像上,没有任何反馈。visual C++强制发布版本使用调试版本代码

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

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

我想使用发布版本的主要原因是安装它的服务器应该只使用msvC++运行时。调试DLL只能通过Visual Studio安装程序提供。

认为 英戈

+0

只需彻底检查您的代码,编译可能启用调试版本的发行版本时可能还有一些内容。 – Stubborn

回答

1

这是不妥当的。在这种情况下(调试运行良好,Release不运行),它倾向于在某处落入未初始化的变量。它最好的做法是在整个代码中放置断言,作为开发人员的健全性检查(断言通常不会作为Release版本的一部分进行编译,但是它们是Debug版本的一部分),以检查这种情况。

调试版本将包含大量额外的符号信息以及更严格的代码中的值分配,以确保调试器可以挂接到它。这有时候可以缓解这样的问题,因为编译器会正确初始化调试器的变量,如果未正确初始化的变量会产生未定义的行为(有时候这种未定义的行为对于程序执行来说是非常致命的!)。因此,当一个Debug版本执行时,Release版本不起作用。

+1

此外,Visual Studio的许可条款仅允许您自由重新分配库的“发行版” - 您可以使用调试库,但仅用于调试应用程序。 – TripeHound

+0

@TripeHound这是我不想使用调试版本的事实! – user1688566

+0

@Ifgtm感谢您的提示!我知道有一些警告没有初始化变量......我会检查它 – user1688566