什么';C中Debug/和Release/目录下的libs之间的区别是什么?
当我链接到Release/下的一个时,出现了一个致命错误:什么';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问题;它与所使用的平台有关 通常,会设置一个项
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
的选项。