Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';C中Debug/和Release/目录下的libs之间的区别是什么?_C_Visual Studio_Debugging_Linker_Release - Fatal编程技术网

什么';C中Debug/和Release/目录下的libs之间的区别是什么?

什么';C中Debug/和Release/目录下的libs之间的区别是什么?,c,visual-studio,debugging,linker,release,C,Visual Studio,Debugging,Linker,Release,当我链接到Release/下的一个时,出现了一个致命错误: LINK : fatal error LNK1146: no argument specified with option '/machine:' 然后我尝试链接到Debug/下的.lib,这次它起作用了 但是有什么不同呢?通常,调试程序集时不进行优化,而发布程序集是优化的。调试程序集通常还包含类似于cruft的源文件行号。您可能需要分别更改调试版本和发布版本的生成配置 这实际上不是一个C问题;它与所使用的平台有关 通常,会设置一个项

当我链接到Release/下的一个时,出现了一个致命错误:

LINK : fatal error LNK1146: no argument specified with option '/machine:'
然后我尝试链接到
Debug/
下的
.lib
,这次它起作用了


但是有什么不同呢?

通常,调试程序集时不进行优化,而发布程序集是优化的。调试程序集通常还包含类似于cruft的源文件行号。

您可能需要分别更改调试版本和发布版本的生成配置

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

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

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

在这种情况下,我猜它们的建造方式有所不同。没有更多的信息,我真的无法进一步评论


什么是操作系统?C编译器使用的是什么?您使用什么构建系统(如果您使用的是IDE,可能是IDE的一个标准)?你正在使用的图书馆是什么。您的组织是构建它,还是从外部获得它?了解这些情况会给我们提供一个开始查找的线索。

但是为什么使用release libs生成失败?@ieplugin:这个错误看起来像是你在命令行上输入了错误,而不是库与此有关。这个错误似乎表明链接器的命令行生成出现了问题。在项目设置->配置属性->链接器->命令行下,命令行是什么样子?(用于释放模式)。在我的电脑上有一个类似于
/MACHINE:X86
的选项。