Debug中的libs与C中的Release /目录有什么区别?

时间:2010-07-14 15:55:40

标签: c visual-studio debugging linker release

当我链接到Release /下的那个时,发生致命错误:

LINK : fatal error LNK1146: no argument specified with option '/machine:'

然后我尝试链接到.lib下的Debug/,这次就可以了。

但可能会有什么不同?

3 个答案:

答案 0 :(得分:2)

通常,不会对调试程序集进行优化,同时优化发布程序集。调试程序集通常也会包含类似源文件行号。

答案 1 :(得分:1)

这实际上不是C问题;它与所使用的平台有关。

通常,将设置一个项目/解决方案来创建一个用于调试的版本和一个用于发布的版本,并将它们放在Debug /和Release /目录中是一种常见的区分方法。调试版本通常会快速编译并运行缓慢,并包含将内部执行链接到源代码的信息(例如行号和变量名)。发布版本通常编译速度较慢,运行速度更快,而且跟踪内部发生的情况要困难得多。

显然,如果只有适当的编译器标志,则调试版和发行版之间必须存在差异。但是,在我熟悉的构建系统中,可以进行任意其他更改,有时这会导致仅发布版本的错误,这很痛苦。或者,如果C代码没有正确指定行为,则调试和发布版本可能会以不同的方式解释它,这也是一种痛苦。

在这种情况下,我猜他们的构建方式存在差异。如果没有更多信息,我无法进一步评论。

什么是操作系统?什么是C编译器使用?你使用什么构建系统(如果你使用IDE,可能是IDE的一个标准)?您正在使用的库是什么。您的组织是构建它还是从外部获取它?了解这些事情会让我们知道从哪里开始寻找。

答案 2 :(得分:0)

您可能希望单独更改调试版和发行版的构建配置。