【问题标题】:msvcprtd.lib(MSVCP100D.dll) : fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'x64'msvcprtd.lib(MSVCP100D.dll):致命错误 LNK1112:模块机器类型“X86”与目标机器类型“x64”冲突
【发布时间】:2013-04-19 10:26:16
【问题描述】:

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

【问题讨论】:

  • 你“清理”了你的项目吗?
  • 是的,清理并重建

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    在项目库目录中,一定要更改

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

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

    【讨论】:

      【解决方案3】:

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

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

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

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

      【讨论】:

        【解决方案4】:

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

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

        不管怎样,不要犹豫,直接从 Visual Studio 安装目录中搜索 msvcprtd.lib 文件。

        【讨论】:

          猜你喜欢
          • 2011-04-03
          • 2012-02-06
          • 2021-08-10
          • 1970-01-01
          • 2013-01-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多