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

5

我创建了一个vs 2010 win32程序(操作系统:Win 8-64位)

然后,我尝试通过以下方式将此win32程序转换为x64:

 Configuration Manager -> new solution platform (select x64) -> copy settings from win32

使用vs2010创建了一个基于之前win32程序的新x64程序。

然而,当我尝试编译和运行x64程序时,出现了一个错误:

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

通过重命名msvcprtd.lib的win32版本和x64版本,我发现程序仍在使用win32 msvcprtd.lib。

我检查并发现msvcprtd.lib位于$(VCInstallDir)lib\amd64。此外:

库目录 -> 继承值包含了所有必要的目录(我想):

$(VCInstallDir)lib\amd64
$(VCInstallDir)atlmfc\lib\amd64
$(WindowsSdkDir)lib\x64

我还检查了程序使用的第三方库和dll文件,它们都是x64版本。

我的问题是为什么该程序仍在使用win32 msvcprtd.lib文件,如何解决这个问题?


你是否“清理”了你的项目? - Mats Petersson
是的,已清理并重新构建。 - Jim Von
4个回答

5
在项目“Library Directories”中,请确保更改 $(VCInstallDir)lib$(VCInstallDir)atlmfc\lib$(VCInstallDir)lib\amd64$(VCInstallDir)atlmfc\lib\amd64

2
在搜索了一番后,我找到了一个有用的页面MSDN信息。据该页面描述,这是一个已知问题,VC有时会从旧版本的VC中获取某些设置,导致出现这种问题。

1
对我来说,通过添加以下内容解决了问题: C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\lib\x64 无论如何,不要犹豫,直接从Visual Studio安装目录中搜索msvcprtd.lib文件。

0

我曾经遇到过同样的问题。当我们为X64平台创建新项目时,它很少出现并且偶尔出现。

以下是解决方案:针对X64平台

1.在配置属性中--> 包含目录 -> $(VCInstallDir)PlatformSDK\include;$(IncludePath);

2.库目录 -> $(VCInstallDir)PlatformSDK\lib;$(LibraryPath);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接