我创建了一个vs 2010 win 32程序(操作系统:Win 8-64bit)
然后,我尝试通过这样做将此win32程序转换为x64:
Configuration Manager -> new solution platform (select x64) -> copy settings from win32
vs2010基于之前的win32程序创建了一个新的x64程序。
但是,当我尝试编译并运行x64程序时,只有一个错误: msvcprtd.lib(MSVCP100D.dll):致命错误LNK1112:模块计算机类型“X86”与目标计算机类型“x64”冲突
通过重命名win32版本和x64版本的msvcprtd.lib,我发现该程序仍在使用win32 msvcprtd.lib。
我查了一下,发现msvcprtd.lib在$(VCInstallDir)lib \ amd64中。此外:
图书馆目录 - >继承的值包含了所有必需的目录(我认为):
$(VCInstallDir)lib\amd64
$(VCInstallDir)atlmfc\lib\amd64
$(WindowsSdkDir)lib\x64
我还检查了程序使用的第三方库和dll是x64版本。
我的问题是为什么程序仍在使用win32 msvcprtd.lib以及如何解决这个问题?
答案 0 :(得分:4)
在项目库目录中,请务必更改
$(VCInstallDir)lib
和$(VCInstallDir)atlmfc\lib
到
$(VCInstallDir)lib\amd64
和$(VCInstallDir)atlmfc\lib\amd64
答案 1 :(得分:1)
搜索后,我遇到了一个有用的页面MSDN Info。 “这是一个众所周知的问题,有时VC会从安装的旧版VC中获取某些设置,并导致这类问题。”
答案 2 :(得分:0)
我也遇到了同样的问题。当我们为X64平台创建新项目时,这种情况很少见,甚至偶尔出现。
这是解决方案:适用于X64平台 在配置属性中->
1.Include目录-> $(VCInstallDir)PlatformSDK \ include; $(IncludePath);
2.Library目录-> $(VCInstallDir)PlatformSDK \ lib; $(LibraryPath);
答案 3 :(得分:0)
对我来说,它通过添加以下内容而起作用:
C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Community \ VC \ Tools \ MSVC \ 14.16.27023 \ lib \ x64
无论如何,请不要直接从Visual Studio安装目录中搜索 msvcprtd.lib 文件。