我使用CUDA (vc++, Visual studio 2008sp1)来调试FEM程序。由于cuda的不足,该程序只能在Win32平台上运行。我认为链接的库文件都是在x86平台上编译的,但是当我编译它时,我得到了错误消息

致命错误LNK1112:模块机类型“x64”与目标机类型“X86”冲突。

我曾尝试将该平台转换为x64,但没有成功。请告诉我:什么是“模块机类型”,什么是“目标机类型”?我怎样才能克服它呢?


当前回答

所有的项目设置看起来都很完美,但我仍然得到了错误。查看.vcxproj文件并搜索“x86”就会发现问题:

<Lib>
  <AdditionalOptions> /machine:X86 %(AdditionalOptions)</AdditionalOptions>
</Lib>

快速搜索/替换所有出现的情况(10个单独的文件设置)解决了这个问题。

其他回答

由于问题是由于编译和目标机器规格(x86 & x64)的差异造成的 遵循以下步骤:

打开要配置的c++项目。 选择“配置管理器”按钮,打开“配置管理器”对话框。 在“主用解决方案平台”下拉列表中,选择相应的选项,打开“新建解决方案平台”对话框。 在“类型或选择新平台”下拉列表中选择64位平台。

它解决了我的问题。

在Visual Studio 2013中,

1)检查项目属性页/配置属性/链接器/所有选项,并纠正所有未配置的机器和目录。

2)检查项目属性页/配置属性/链接器/输入,并纠正所有未配置的目录。

参见示例1)

对于一些使用命令提示符(dos提示符)的用户 这可能会有帮助:

call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" --help
Error in script usage. The correct usage is:
    "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" [option]
  or
    "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" [option] store
  or
    "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" [option] [version number]
  or
    "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" [option] store [version number]
where [option] is: x86 | amd64 | arm | x86_amd64 | x86_arm | amd64_x86 | amd64_arm
where [version number] is either the full Windows 10 SDK version number or "8.1" to use the windows 8.1 SDK
:
The store parameter sets environment variables to support
  store (rather than desktop) development.
:
For example:
    "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86_amd64
    "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86_arm store
    "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86_amd64 10.0.10240.0
    "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86_arm store 10.0.10240.0
    "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64 8.1
    "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64 store 8.1
:
Please make sure either Visual Studio or C++ Build SKU is installed.

如果你这样做:

CL "%1%2%3" /EHsc /链接user32。自由Gdi32。自由Winmm。自由comctl32。自由*。obj /子系统:CONSOLE /MACHINE:x86

你必须取消*。obj之前;为了避免混淆链接器与64和32位对象从以前的编译遗留下来?

如果您的解决方案有库项目,请检查属性->图书管理员->通用中的目标机器属性

我在构建QT时遇到了这个问题,我在某处读到的说明建议我使用VS命令提示符配置nmake。

我选择了x64命令提示符并轻松地执行了配置。当我尝试nmake时,它给出了这个错误。

我想有些组件是为32位系统预建的。这个错误甚至报告了哪些模块是为x86构建的。

我使用32位默认的VS命令提示符,它工作。