尝试运行程序时出现错误图像错误

时间:2016-09-28 02:39:29

标签: c++ image console

所以我最近完成了一个我一直在研究的VC ++控制台应用程序并将其发送给我的一个朋友试用,但他甚至无法打开它,因为他一直收到错误。

将打开一个标题为 Bad - Image 的框,然后显示错误和内容,它说它无法在朋友计算机上找到文件MSVCP140D.dll但是当我开始它运行良好的程序。

有谁能告诉我为什么他不能播放该节目以及如何解决它?

3 个答案:

答案 0 :(得分:3)

您已在调试模式下构建项目,并且正在使用Multi-threaded Debug DLL (/MDd) RunTime库。

  • 在Visual Studio主菜单中,选择Project - >特性
  • 转到"配置属性" - > C / C ++ - >代码生成
  • 在运行时库中,选择 Multi-threaded Debug (/MTd) 并重建您的项目。

或者,您可以在发布模式下构建项目,然后选择 Multi-threaded (/MT) 运行时库。

这将生成一个使用标准Windows库的独立可执行文件,您不必使用* .exe文件提供额外的dll。

答案 1 :(得分:2)

您需要使用Microsoft Visual C ++ Redistributable软件包发送程序。那是MSVCP140D.dll

正如user4581301指出的那样,D中的MSVCP140D.dll表示“调试”。 您不应该发送启用调试的可执行文件。它使逆向工程,黑客攻击和其他修改变得更容易。 您应该编译一个发布版本,并将其与可再发行组件一起发送。

答案 2 :(得分:0)

嗯,你需要做一件事(简单的解决方案),你只需转到你已经构建了代码的系统的system32目录并查找文件MSVCP140D.dll,把它放在你的可执行文件(.exe)并将其提供给您的朋友,并告诉他将dll保存在与exe相同的文件夹中。

MSVCP140D.dll(可再发行包)是运行应用程序时需要提供的运行时依赖项之一。

现在它将被安装。或者您可以在目标系统的system32复制dll,然后尝试。

但如果您将debug版本提供给客户端,则不应该提供declare @flag bit = 0 declare @person_ids varchar(100) = '(1001,1002)' select * from file_table fd where fd.person_id in (select case @flag when 0 then @person_ids else fd.person_id end) 版本,您应该提供它的发布版本。