{c ++}程序在计算机上运行时发送错误0xc00007b,没有视觉工作室正确的dll到位

时间:2016-07-26 22:07:09

标签: c++ windows-runtime

我有这个程序:

#include <iostream>
#include <string>
using namespace std;

int main() {

    string inputfile = "input.pdf";
    string outputfile = "output.tiff";
    cout << "paste path of pdf to convert" << endl;
    getline(cin, inputfile);
    cout << "type the path of the output file with the correct extension        ie png jpeg or tif" << endl;
    getline(cin, outputfile);
    string command = "gm.exe montage -tile 1x10000 -geometry 85% -density 150x150 " + inputfile + " -quality 100 " + outputfile;

    system(command.c_str());
    return 0;
}

正如你可以看到它使用std库。我没有使用安装项目,因为它感觉不必要,因为A可以很容易地复制和粘贴应用程序和dll。在我在副本中包含dll之前,它给了我以下错误消息:

  

MSVCP140d.dll丢失,程序无法启动。

我从我的计算机上获得了DLL的副本,这似乎解决了这个问题,但是当我在非开发计算机上运行它时它给了我:

  

ucrtbassed.dll缺失,程序无法启动。

我从互联网上下载了丢失的DLL,但是现在当我启动程序时,我收到了这个错误:

  

应用程序无法正确启动(0xc0000007b)。单击“确定”关闭应用程序。

似乎当计算机安装了Visual Studio时,代码运行正常;但是,当他们没有安装Visual Studio时,它不会运行。我已经安装了VCredist.exe并且发生了同样的问题。

关于虾

1 个答案:

答案 0 :(得分:1)

  1. 构建项目Release版本。不是Debugd名称末尾的符号.dll表示您已构建调试版本。
  2. 静态链接所有库right clink on Project -> Properties (-> select Release configuration and All Platforms at top of the window) -> C/C++ -> Code Generation -> set "Runtime Library" to "Multi-threaded (/MT)"
  3. 不要忘记转义传递给其他应用程序命令行的参数。我修改了一行代码。请参阅文件名周围的其他引号。

    string command = (string)"gm.exe montage -tile 1x10000 -geometry 85% -density 150x150 " +
        "\"" + inputfile + "\" -quality 100 \"" + outputfile + "\"";