我创建了一个vs2010 win32程序(操作系统:win8 -64bit)
然后,我试着把这个win32程序转换成x64,这样做:
Configuration Manager -> new solution platform (select x64) -> copy settings from win32
vs2010在之前的win32程序的基础上创建了一个新的x64程序。
然而,当我试图编译并运行x64程序时,有一个错误:msvcprt .lib(msvcp100 .dll):致命错误LNK1112:模块机器类型'X86'与目标机器类型'x64'冲突
通过重命名win32版本和x64版本的msvcprtd。我发现该程序仍在使用win32 msvcprtd.lib。
我检查并找到了msvcprtd。lib在$(VCInstallDir)libamd64中。此外:
Library Directories -> Inherited values包含了所有必需的目录(我认为):
$(VCInstallDir)libamd64
$(VCInstallDir)atlmfclibamd64
$(WindowsSdkDir)libx64
我还检查了该程序使用的第三方库和dll是x64版本的。
我的问题是为什么程序仍然使用win32 msvcprtd。如何解决这个问题?
在项目库目录中,确保您更改了
$(VCInstallDir)lib
和$(VCInstallDir)atlmfclib
$(VCInstallDir)libamd64
和$(VCInstallDir)atlmfclibamd64
搜索后,我遇到了一个有用的页面MSDN信息。"这是一个已知的问题,有时VC会从旧版本的VC中拾取某些设置,并导致这些问题。"
对于我来说,添加以下内容是有效的:
C:Program Files (x86)Microsoft Visual Studio2017CommunityVCToolsMSVC14.16.27023libx64
无论如何,不要犹豫搜索msvcprtd。lib文件直接从Visual Studio安装目录。我也遇到过同样的问题。当我们为X64平台创建新项目时,它很少出现,偶尔也会出现。
这是解决方案:对于X64平台在配置属性中-->
1。包含目录-> $(VCInstallDir)PlatformSDK Include;$(IncludePath);
2。库目录-> $(VCInstallDir)PlatformSDKlib;$(LibraryPath);