0

我有一个 Visual Studio 项目。这很简单,而且很有效。但是,我们正在将代码移植到 64 位。我已经编译了这个简单的项目,但它无法链接:

fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'x64'

这告诉我它正在尝试链接错误版本的库。它应该链接 64 位库,但它正在尝试链接 32 位库。这显然是错误的。

我的问题是我无法弄清楚我的项目决定在哪​​里链接该库。我看过:

  • 项目属性,道具文件。尽管指定了 lib 路径,但没有指定 lib 名称。
  • 项目属性 -> 链接器 -> 命令行。也不在那里。
  • 我已经查看了某种 a 的头文件#pragma comment(lib, ),但我找不到它的任何用途。

我还能在哪里看?有没有办法让 Visual Studio 告诉我它是如何决定在不同的库中链接的?

不确定它是否相关,但这是一个使用 CppUnit 的小型单元测试项目。它cppunit-vc100-MTd.lib在应该链接的时候链接cppunit-vc100-x64-MTd.lib

4

1 回答 1

1

在您的项目属性页面上,在链接器、常规下,将项目链接进度报告设置为您需要显示被点击的库的任何内容。/VERBOSE 或 /VERBOSE:lib 可能会做你想做的事。

使用 /VERBOSE:lib 在输出窗口中显示的示例输出

1>  Searching libraries
1>      Searching D:\winsdk\lib\kernel32.lib:
1>      Searching D:\winsdk\lib\user32.lib:
1>      Searching D:\winsdk\lib\gdi32.lib:
1>      Searching D:\winsdk\lib\winspool.lib:
1>      Searching D:\winsdk\lib\comdlg32.lib:
1>      Searching D:\winsdk\lib\advapi32.lib:
1>      Searching D:\winsdk\lib\shell32.lib:
1>      Searching D:\winsdk\lib\ole32.lib:
1>      Searching D:\winsdk\lib\oleaut32.lib:
1>      Searching D:\winsdk\lib\uuid.lib:
1>      Searching D:\winsdk\lib\odbc32.lib:
1>      Searching D:\winsdk\lib\odbccp32.lib:

ETC..

此外,您的源代码树中可能有一个头文件,该文件通过

#pragma comment (lib, "cppunit-vc100-MTd.lib")

但这应该很容易通过“在文件中查找”点击“包含路径”进行搜索,这是“在文件中查找”配置中的固定选项之一。

于 2012-11-08T02:02:32.260 回答