【发布时间】:2016-07-26 22:07:09
【问题描述】:
我有这个程序:
#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 并且发生了同样的问题。
关于虾
【问题讨论】:
-
@πάντα-ῥεῖ 我的回答仍然与这里有关。您标记为重复的答案中没有包含正确的说明。看到这个:stackoverflow.com/a/38600728/1836540
-
不确定这是否完全正确。这家伙通常是正确 DLL 的错误版本。
-
@slavanap 这不是问题。我不会投票重新开放,因为我们只是再次锁定它。 OP的代码与他的问题不符。在任何发布的代码中都不需要 Windows 10 系统 dll。并将一个复制到可能不是 Windows 10 的计算机上......当然,这会爆炸。可能该 DLL 正在调用另一个没有版本匹配希望的 DLL。 OP 立即声明他们不想构建安装程序来防止 DLL 地狱的这一方面。解决方案是,错误地引用 Obiwan Kenobi,“使用安装程序,Luke。”
-
@slavanap 你为什么生气??
-
@slavanap 我把自己放在剑上。对有问题的 DLL 进行了一些阅读。 vcredist 的世界在我不注意的时候发生了变化。我们一致认为,大多数问题将随着发布版本和正确 vcredist 的安装而消失。该死的几乎所有这些都应该随着静态静态链接而消失,但是Windows上的静态链接过去对我的待遇很差(并且可能是一个安全漏洞)。我不知道谁对你的回答投了反对票;它以前看起来是正确的,现在看起来仍然正确。
标签: c++ windows-runtime