VC9: LINK : warning LNK4068: /MACHINE not specified; defaulting to X86

原创 2012年03月23日 15:06:18

当把32位程序改成X64的配置编译后,可能会出现错误:

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

通常是因为某些编译单元被编译成了X86的机器码,进一步的原因是编译选项中缺少
/MACHINE,默认会选择X86;在属性中的link面板中加入/MACHINE:X64
即可。

 

The error is explicit, you are trying to link libraries that were compiled with different CPU targets. An executable image can only contain pure x86 (32-bit) or pure x64 (64-bit) code. Mixing is not possible.

You change the target CPU by creating a new configuration for the project, only changing the linker setting isn't enough. Build + Configuration Manager, Active solution platform combo on upper right, choose New and select x64. That creates a new configuration with several modified project settings, most importantly the compiler that will be used.

Beware that prior to VS2010, the 64-bit compilers are not installed by default. If you don't see x64 in the platform combo then you'll need to re-run setup.exe and turn on the option to install the 64-bit compilers. Then also re-run any service pack installer you may have applied.

A possible approach with less pain points is to use the 32-bit version of the library.

bumped into this too and found a solution.

First on how I got into this problem. I have a project which builds in x86. Then I use the Configuration Manager to add x64, and I hit this problem.

By looking at BuildLog.htm carefully, I see both of these listed as linker options: /MACHINE:X64
/machine:X86

I can't find any where in the Property Pages dialog where I can change this, so I open up the .vcproj file and look for the appropriate line and change it to: AdditionalOptions=" /STACK:10000000 /machine:x64 /debug"

 

warning LNK4042: 对象被多次指定;已忽略多余的指定

转自VC错误:http://www.vcerror.com/?p=1409 warning LNK4042: 对象被多次指定;已忽略多余的指定 问题描述: 在改造upx源码的过程...
  • swanabin
  • swanabin
  • 2015年02月14日 17:29
  • 2872

warning LNK4042: 对象被多次指定;已忽略多余的指定

经常遇到这种问题,最主要原因是因为工程的不同路径下存在相同名称的文件; 解决办法如下 $(IntDir)%(RelativeDir) ,然后再编译就能完美通过了!...
  • a345252622
  • a345252622
  • 2016年10月19日 16:37
  • 1266

Qt 使用qmake 遇到 warning LNK4042: object specified more than once; extras ignored 错误的处理办法

当同一个工程下出现两个文件名相同的cpp文件而又没办法修改文件名时,编译器链接时会报错链接错误 lnk:4042 对于qt的工程该如何解决呢? 网上有种说法: 在工程pro中加入 CONF...
  • ruowomtv
  • ruowomtv
  • 2012年04月30日 15:14
  • 3090

在windows下开发的常见错误——持续更新,不断完善

1、VC9: LINK : warning LNK4068: /MACHINE not specified; defaulting to X86 原因之一:工程中包含的资源文件不在当前的工程目录中 ...
  • songjinshi
  • songjinshi
  • 2012年08月16日 09:16
  • 4186

X64位动态库,想改为静态库lib时,未指定MACHINE类型错误的解决方法fatal error LNK1112

当windows下X64位动态库,想改为静态库lib时,修改常规属性中的配置类型由dll改为lib后,编译时由于未指定MACHINE类型,系统会自动指定:LINK : warning LNK4068:...
  • robust_ot
  • robust_ot
  • 2017年02月09日 15:28
  • 847

OpenCV3.0 或OpenCV3.1 与cuda编译出现LINK: warning LNK4044: 无法识别的选项/LC:/Program Files/XXXXXXXX/lib/x64

OpenCV3.0 或OpenCV3.1 与cuda编译出现LINK: warning LNK4044: 无法识别的选项“/LC:/Program Files/NVIDIA GPU Computing...
  • wfh2015
  • wfh2015
  • 2016年12月03日 21:06
  • 963

warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for re

问题描述: 在Ant编译的时候报警告。 解决方案:改为
  • cuiyaoqiang
  • cuiyaoqiang
  • 2016年05月17日 11:30
  • 292

error LNK1112

警告 1 warning LNK4068: 未指定 /MACHINE;默认设置为 X86 错误 2 fatal error LNK1112: 模块计算机类型“ARM”与目标计算机类型“X86”冲突  ...
  • constantine
  • constantine
  • 2008年12月02日 13:02
  • 3952

VC9: LINK : warning LNK4068: /MACHINE not specified; defaulting to X86

当把32位程序改成X64的配置编译后,可能会出现错误: fatal error LNK1112: module machine type 'x64' conflicts with target m...
  • summerhust
  • summerhust
  • 2012年03月23日 15:06
  • 6996

ofbiz ant启动时 warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; se...

今天做ofbiz项目时,添加一个文件上传的功能,也是新手,所以上传内容基本都是从网上找的,其间需要import org.apache.tomcat.util.http.fileupload.FileI...
  • zhushouchen
  • zhushouchen
  • 2017年03月06日 14:48
  • 410
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VC9: LINK : warning LNK4068: /MACHINE not specified; defaulting to X86
举报原因:
原因补充:

(最多只允许输入30个字)