5

我创建了一个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”冲突

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

我检查并发现 msvcprtd.lib 在 $(VCInstallDir)lib\amd64 中。而且:

Library Directories -> Inherited values 包含了所有必要的目录(我认为):

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

我还检查了程序使用的第 3 方库和 dll 是 x64 版本的。

我的问题是为什么程序还在使用 win32 msvcprtd.lib 以及如何解决这个问题?

4

4 回答 4

5

In the project Library Directories, be sure you change

$(VCInstallDir)lib and $(VCInstallDir)atlmfc\lib

to

$(VCInstallDir)lib\amd64 and $(VCInstallDir)atlmfc\lib\amd64

于 2015-10-25T21:29:36.333 回答
2

搜索后,我发现了一个有用的页面MSDN Info“这是一个已知问题,有时 VC 会从安装的旧版本 VC 中获取某些设置并导致此类问题。”

于 2013-10-17T11:56:24.740 回答
1

对我来说,它通过添加以下内容起作用:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\lib\x64

无论如何,不​​要犹豫,直接从 Visual Studio 安装目录中搜索msvcprtd.lib文件。

于 2019-01-10T11:20:18.427 回答
0

我遇到了同样的问题。当我们为 X64 平台创建新项目时,它很少出现。

这是解决方案:对于 X64 平台在配置属性中-->

1.包含目录 -> $(VCInstallDir)PlatformSDK\include;$(IncludePath);

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

于 2018-08-11T06:30:07.540 回答