Visual c++ 在类型或选择新平台下拉列表中,选择64位平台

Visual c++ 在类型或选择新平台下拉列表中,选择64位平台,visual-c++,visual-c++-2008,Visual C++,Visual C++ 2008,它解决了我的问题。在Visual Studio 2012+/-中,“配置属性”的属性页。链接器。“命令行”包含一个标记为“其他选项”的框“。如果您正在构建x64,请确保该框不包含/MACHINE:I386。我的项目执行了此操作,并生成了相关错误。如果您的项目在“项目属性”->“配置属性”->“常规”中设置了相同的中间目录,则也可能会发生此问题。我今天遇到这种情况,因为我在x86模式下添加了一个库目录,并意外地删除了继承的目录,使它们改为硬编码。 然后切换到x64后,我的VC++目录仍为: “…;

它解决了我的问题。

在Visual Studio 2012+/-中,“配置属性”的属性页。链接器。“命令行”包含一个标记为“其他选项”的框“。如果您正在构建x64,请确保该框不包含/MACHINE:I386。我的项目执行了此操作,并生成了相关错误。

如果您的项目在“项目属性”->“配置属性”->“常规”中设置了相同的中间目录,则也可能会发生此问题。

我今天遇到这种情况,因为我在x86模式下添加了一个库目录,并意外地删除了继承的目录,使它们改为硬编码。 然后切换到x64后,我的VC++目录仍为:

“…;$(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86);”


我使用的不是_x64。

而是CMake&然后添加了一个win32配置。属性页显示了x86,但实际上在文本编辑器中打开vcxproj文件时,它是x64!手动更改为x86解决了此问题。

首先,请尝试以下操作: 1.转到configuration Manager并创建一个新的x64(如果还没有)。 2.选择x64解决方案。 3.转到项目属性,然后单击链接器->高级选择x64机器。 4.现在重建解决方案


如果仍然出现相同的错误。尝试清理解决方案,然后再次重建并打开visual studio,您将获得最近打开的项目的列表,右键单击该项目并将其从中删除。现在转到解决方案并再次打开解决方案。

这是一个非常令人沮丧和恼火的问题,但一旦您理解了它,它就非常简单:您在构建一种体系结构类型(在您的案例中是x64)时有一些元素,尽管它是另一种类型(比如x86)的目标

您可以通过查看导致崩溃的obj文件来剖析问题的根源,并从中开始查找问题。每个obj都有一个源代码模拟:在cpp、c、asm等中。可能有一些特殊的构建事件使用了错误的工具。在属性表中检查该属性


在浏览C Johnson列出的要做的事情之前,我会先看看那里。

当我将VS2008解决方案转换为VS2010并将win32配置更改为X64时,我会遇到这种情况,在我的旧解决方案中,我有mfcs90d.lib(配置->链接器->输入->其他依赖项),由于我使用的是VS010,我刚刚检查了VS2010文件夹中的mfcs100d.lib,所以我在(配置->链接器->输入->附加依赖项)中将mfcs90d.lib更改为mfcs100d.lib,效果很好

所有的项目设置似乎都很完美,但我还是犯了错误。查看
.vcxproj
文件并搜索“x86”揭示了问题:

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

/机器:X86%(附加选项)

快速搜索/替换所有事件(十个单独的文件设置)修复了该问题。

vcxproj文件可能包含“MACHINE:i386” 使用编辑器编辑vcxproj文件。把它拿走


我通过在Visual Studio 2013中将Win32更改为*64解决了这个问题。

对于使用QT Creator的用户,问题是相同的(如@c-johnson所述)。 确保工具包中MSVC的编译器设置设置为x86,如下所示


对于某些使用命令提示符(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.
如果您喜欢这样做:

call "c:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat" 
nmake -f makefile
CL“%1%2%3”/EHsc/link user32.lib Gdi32.lib Winmm.lib comctl32.lib*.obj/子系统:控制台/计算机:x86


您必须在之前删除*.obj;为了避免将链接器与先前编译中遗留的64位和32位对象混淆?

上面有很多好的建议

此外,如果您尝试在x86 Win32中构建,请执行以下操作:

确保在程序文件(x86)中链接到的任何库实际上都是x86库,因为它们不一定是


例如,我在C:\Program Files(x86)\Microsoft Visual Studio\2019\Professional\SDK中链接到的一个lib文件抛出了该错误,最终我在C:\Program Files(x86)\Windows Kits\10\lib\10.0.18362.0\um\x86中找到了它的x86版本,一切正常。

我的目标是一个用C语言编写的x64 Windows 10文本模式DOSBox应用程序。 使用“VisualStudio2019社区”通过DOS提示符“nmake-f makefile”进行编译。 误差类似,但在另一侧:

fatal error LNK1112: module machine type 'x32' conflicts with target machine type 'X64'
用VC++2010在另一台计算机上编译是可以的。但“Visual Studio 2019社区”在此计算机上失败。因此,我的设置是正确的,以上所有答案都不起作用

我想告诉大家,解决方案是一个make.bat,如下所示:

call "c:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat" 
nmake -f makefile

你会发现还有很多其他的vcvarsxxx.bat,只有这一个词。

我自己解决了这个问题,如下所示

首先,我遵循了这个问题的其他答案,结果得出结论,所有项目设置都是正确的

然后我用编辑器检查了.vcxproj文件,发现两个(调试和发布)x64配置的属性没有指定,而Win32配置都包含MachineX86

但是,我已经从VisualStudio的Properties>Configuration Properties>Linker>Advanced>Target Machine中验证了x64配置是MachineX64(/Machine:x64)

因此,我编辑了.vcxproj文件,将MachineX64包含在两个x64配置中。回到VisualStudio项目属性对话框,我注意到MachineX64(/MACHINE:X64)设置与以前一样,只是现在它显示为粗体(显然意味着该值不是默认值)


我重新构建了它,它成功了。

在我的例子中,将环境变量
PROCESSOR\u ARCHITECTURE
设置为
AMD64
解决了这个问题


救生圈。同样在步骤4中,“Li”
fatal error LNK1112: module machine type 'x32' conflicts with target machine type 'X64'
call "c:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat" 
nmake -f makefile