V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sokis
V2EX  ›  程序员

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

  •  
  •   sokis ·
    sokis · 2016-10-09 17:13:05 +08:00 · 3725 次点击
    这是一个创建于 2967 天前的主题,其中的信息可能已经有所发展或是发生改变。

    安装好 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
    
    
    • 环境: win7 x64

    错误信息

    gyp info it worked if it ends with ok
    gyp info using [email protected]
    gyp info using [email protected] | 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]
    ....
    
    3 条回复    2016-10-10 12:53:34 +08:00
    wevsty
        1
    wevsty  
       2016-10-09 22:11:11 +08:00   ❤️ 1
    X64 的程序链接 X86 的 lib 的时候出错了。
    你的库引用目录里面写的有$(VCInstallDir)lib ,这样的是 X86 的 lib ,应该去掉写成$(VC_LibraryPath_x64)或者$(VCInstallDir)lib\amd64 这样,自己多检查一下吧
    sokis
        2
    sokis  
    OP
       2016-10-10 10:06:38 +08:00
    @wevsty 谢谢回复,我还有个疑问,因为我不是做 C++开发的,所以问下,这些配置除了在 VS 工具里面配置,还能在那些地方改呢?因为我是用 node-gyp 编译,是不会打开工具 的。
    wevsty
        3
    wevsty  
       2016-10-10 12:53:34 +08:00
    @sokis VS 也是根据配置调用编译器来编译的,如果不用 VS 的配置,那你就得自己修改编译用的命令或者 makefile 之类的东西
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2748 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 161ms · UTC 08:21 · PVG 16:21 · LAX 00:21 · JFK 03:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.