【问题标题】:Visual c++ problem in compiling native windows 10 application [duplicate]编译本机Windows 10应用程序时的Visual C++问题[重复]
【发布时间】:2020-05-14 20:22:29
【问题描述】:

我正在 Vs 2019 中编写一个本机 C++ 应用程序,该应用程序应该能够在新配置的 Windows 10 机器上运行。 问题是,当我在这台机器上运行我的 .exe 应用程序时,我得到了缺少 dll 错误,例如 MSVCP140D.DLL、VCRUNTIME140D.dll 等。 我尝试在客户机上安装来自 MSDN 的 vcredist,并且还尝试从项目配置中的“代码生成”模块中更改“运行时库”。 我还关注了我在这个平台上阅读过的其他一些教程,但我找不到任何真正有用的东西。 我什至试图将丢失的 dll 放在 .exe 文件的同一目录中手动注册它们,实际上它不起作用,但是我正在开发的这个应用程序应该是可再分发的,所以用户应该只需要执行它。

如果我尝试使用其他编译器(例如 MinGw)编译我的程序,它可以工作,但我想尽可能使用 vc++ 默认编译器。

有没有办法解决这个问题?

谢谢!

【问题讨论】:

  • 实际上我正在测试 x64 版本和调试
  • Properties->C/C++->Code Generation->Runtime Library 下的值是多少?
  • 您好,感谢您的快速回复!该值设置为“DLL 多线程 (/MD)”,但我也尝试过 (/MDd) 和 /MT
  • 调试版本使用/Mtd,发布版本使用/Mt。在来宾机器上运行应用程序并告诉我们什么 dll,您会收到缺少 dll 错误。
  • 这些是标准 C++ 和 C 运行时库的调试版本。注意文件名末尾的 D。它们在代码中有很多断言,并为 malloc/new 分配增加了大量开销,帮助您调试代码。 redist 安装不包括它们,Microsoft 不提供重新分发它们的许可证。不要让你的生活更加困难,因为执行缓慢且未优化的 C++ 代码是没有意义的。您必须部署项目的发布版本。

标签: c++ windows visual-studio visual-c++ exe


【解决方案1】:

也许你使用了 MSVCP140.DLL,没有 D。D 代表 DEBUG,我不知道 Debug 版本是否与 Visual Studio 可再发行版本一起提供。如果您在 Visual Studio 中编译尝试构建 Release 版本,这应该与可再发行组件中的 DLL 一起使用

【讨论】:

  • 感谢您的回复 :) 实际上我正在测试 x64 版本和调试,忘记在帖子中提及。它在 x64dbg、x64release、x86release、x86dbg 上给了我相同的 DLL 错误
  • 调试 CRT 不在可再发行组件中。
猜你喜欢
  • 2016-03-28
  • 1970-01-01
  • 2015-01-02
  • 1970-01-01
  • 1970-01-01
  • 2015-09-15
  • 2022-07-23
  • 2016-01-05
  • 1970-01-01
相关资源
最近更新 更多