1

每当我在 Visual Studio 2010 中创建一个新项目并且一开始没有设置特定平台(在我的情况下为 x64)时,之后我将无法完全更改它。所以我用一个外部库(编译为x64)设置了所有需要的东西,然后按编译它显然失败了,因为两个平台不匹配。

sfml-graphics-sd.lib(RenderStates.obj):致命错误 LNK1112:模块机器类型“x64”与目标机器类型“X86”冲突

注意到我使用 Build->Configuration-Manager->Active projectplattform->New...->x64 将其更改为 x64。这与我在做任何其他事情之前所做的相同并且它有效,但如果我之后再做,我会收到链接器错误:

libcpmtd.lib(uncaught.obj):致命错误 LNK1112:模块机器类型“x64”与目标机器类型“X86”冲突

*.obj 文件可以从项目更改为项目(例如 cout.obj),据我了解,Visual Studio 选择 x86 标准库,并且在我切换平台后不会改变它的决定。

所以对于这个问题:我如何强制 VS 使用新指定的 x64 平台 - 也适用于标准库?

注意:创建新的配置设置将自动将目标机器的链接器设置更改为:MachineX64 (/MACHINE:X64)

注意:不确定它是否相关,但我正在静态链接运行时库Multithreaded-Debug (/MTd)

4

2 回答 2

2

如果有人遇到和我一样的问题,他可以在MSDN '论坛'上找到讨论和解决方案。

OK,找到了,LibraryPath对应VC++ Directories项目属性页中的Library Directories属性。这就解释了发生了什么,该值通常是继承的,因此在您创建 add x64 时它会自动更改。但是,由于您修改了该值,因此它现在是项目的本地值,并且在添加 x64 时它只是被复制...与所有那些 x86 特定的目录。

我想在 Linker\General\Additional Library 目录中添加该 lib 目录更简单、更安全

于 2012-06-09T18:32:24.383 回答
0

卢卡斯上面的回答是正确的。但是,可能还有其他并发症。

如果更改库目录路径不起作用,请确保您的 vcxproj 文件不是只读文件或尝试直接在 vcxproj 文件中编辑路径。

使用 VS Perforce 插件,更改库目录路径和构建可能实际上不会保存您的项目文件,并且您不会收到文件为只读的警告,从而允许构建以旧的、不正确的设置继续进行。

于 2015-05-27T20:35:37.133 回答