C++的同学来帮我看看问题, win7 64 下安装 VS2015 后编译报错

2016-10-09 17:13:05 +08:00
 sokis

安装好 vs2015 后,用 gyp 编译,报错

libcpmt.lib(xthrow.obj) : fatal error LNK1112: 模块计算机类型“ X86 ”与目标计算机类型“ x64 ”冲突

网上搜了很多解决方案,都尝试了。 网后我也检查了 VS 属性设置里面的 [链接器] > [高级] > [目标计算机: MachineX64 (/MACHINE:X64)] 跟 x64 相关的配置地方都设置,和检查了。 gyp 编译的时候还是会报错。。。实在没办法了,求助了。

另外我也检查了, C++的宏变量配置,还有环境变量里面的 INCLUED 配置 都是正常的

贴几个变量配置:(系统默认的)

包含目录:$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSdkDir)include;$(WindowsSDK_IncludePath);$(UniversalCRT_IncludePath);$(FrameworkSDKDir)\include
引用目录:$(VC_ReferencesPath_x64);
库目录:$(VCInstallDir)lib;$(VCInstallDir)atlmfc\lib;$(WindowsSdkDir)lib;$(WindowsSDK_LibraryPath_x64);$(UniversalCRT_LibraryPath_x86);$(FrameworkSDKDir)\lib

错误信息

gyp info it worked if it ends with ok
gyp info using node-gyp@3.4.0
gyp info using node@6.7.0 | win32 | x64
gyp info spawn C:\Python27\python.exe
gyp info spawn args [ 'D:\\nodejs\\node_modules\\node-gyp\\gyp\\gyp_main.py',
gyp info spawn args   'binding.gyp',
gyp info spawn args   '-f',
gyp info spawn args   'msvs',
gyp info spawn args   '-G',
gyp info spawn args   'msvs_version=auto',
gyp info spawn args   '-I',
gyp info spawn args   'D:\\Users\\****\\Desktop\\pty.js\\build\\config.gypi',
gyp info spawn args   '-I',
gyp info spawn args   'D:\\nodejs\\node_modules\\node-gyp\\addon.gypi',
gyp info spawn args   '-I',
gyp info spawn args   'D:\\Users\\****\\.node-gyp\\6.7.0\\include\\node\\common.g
gyp info spawn args   '-Dlibrary=shared_library',
gyp info spawn args   '-Dvisibility=default',
gyp info spawn args   '-Dnode_root_dir=D:\\Users\\****\\.node-gyp\\6.7.0',
gyp info spawn args   '-Dnode_gyp_dir=D:\\nodejs\\node_modules\\node-gyp',
gyp info spawn args   '-Dnode_lib_file=node.lib',
gyp info spawn args   '-Dmodule_root_dir=D:\\Users\\****\\Desktop\\pty.js',
gyp info spawn args   '--depth=.',
gyp info spawn args   '--no-parallel',
gyp info spawn args   '--generator-output',
gyp info spawn args   'D:\\Users\\****\\Desktop\\pty.js\\build',
gyp info spawn args   '-Goutput_dir=.' ]
gyp info spawn C:\Program Files (x86)\MSBuild\14.0\bin\msbuild.exe
gyp info spawn args [ 'build/binding.sln',
gyp info spawn args   '/clp:Verbosity=minimal',
gyp info spawn args   '/nologo',
gyp info spawn args   '/p:Configuration=Release;Platform=x64' ]
.....
省略。。。
..... 
libcpmt.lib(xthrow.obj) : fatal error LNK1112: 模块计算机类型“ X86 ”与目标计算机类型“ x64 ”冲突 [D:\Users\****\Desktop\pty.js\build\deps\winpty\winpty-agent.vcxproj]
....
3729 次点击
所在节点    程序员
3 条回复
wevsty
2016-10-09 22:11:11 +08:00
X64 的程序链接 X86 的 lib 的时候出错了。
你的库引用目录里面写的有$(VCInstallDir)lib ,这样的是 X86 的 lib ,应该去掉写成$(VC_LibraryPath_x64)或者$(VCInstallDir)lib\amd64 这样,自己多检查一下吧
sokis
2016-10-10 10:06:38 +08:00
@wevsty 谢谢回复,我还有个疑问,因为我不是做 C++开发的,所以问下,这些配置除了在 VS 工具里面配置,还能在那些地方改呢?因为我是用 node-gyp 编译,是不会打开工具 的。
wevsty
2016-10-10 12:53:34 +08:00
@sokis VS 也是根据配置调用编译器来编译的,如果不用 VS 的配置,那你就得自己修改编译用的命令或者 makefile 之类的东西

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/311431

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX