msvcprtd.lib(MSVCP100D.dll):致命错误LNK1112:模块计算机类型“X86”与目标计算机类型“x64”冲突

时间:2013-04-25 13:35:41

标签: c++ windows visual-studio-2010 64-bit

我创建了一个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以及如何解决这个问题?

4 个答案:

答案 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 文件。