我有第二个模拟器,我尝试以相同的方式生成它并且工作正常。
默认情况下,为了这个目的,我在CreateProcess中使用Qt3的QProcess包装器,但是我使用系统,我自己的CreateProcess和ShellExecute获得相同的行为。
cmd.exe“/ c application params”的ShellExecute确实为我提供了更多信息。我得到了对话框
“程序无法启动,因为您的计算机缺少MSVCR80.dll。请尝试重新安装该程序以解决此问题。”
不方便的是,父应用程序和第二个模拟器都使用MSVCR80.dll。
将g:\ windows \ winsxs \ x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4927_none_d08a205e442db5b5中的MSVC * 80.dll复制到与我的可执行文件相同的目录时,错误消息将更改为
“运行时错误!
程序:g:\ path \ to \ app.exe
R6034
应用程序尝试错误地加载C运行时库 请联系应用程序的支持团队以获取更多信息。
其次是
应用程序无法正确启动(0xc0000142)。单击“确定”关闭应用程序。
而且,再一次,应用程序在命令行运行正常,并且这些dll就位。
更新
我怀疑它可能与环境有关,所以改变了我的ShellExecute机制来做cmd / c set&& app params。我设置了一个带有相同参数的cmd.exe,我的应用程序现在崩溃了。当我找出原因时会更新:)
这是MATLAB的组件运行时工具,它将我的进程的PATH变量修改为不良影响。它在它自己的dir之前充满了dll并且造成了严重破坏。
答案 0 :(得分:1)
我使用的一个愚蠢的工具在PATH上做了一个setenv,在它之前添加动态加载某些dll所需的目录,但是后来搞砸了我的应用程序。我最后使用了GetEnvironmentStrings,如上一个示例here所示,删除了PATH env var中的第一个条目,并将新的(原始)环境发送到QProcess,后者包装了CreateProcessA。
答案 1 :(得分:0)
您需要安装CRT
答案 2 :(得分:0)
这个可以工作 - 如果它打破了,你可以保留两个部分: - )
尝试从此处安装VC ++可再发行组件 - http://www.microsoft.com/downloads/en/details.aspx?familyid=A5C84275-3B97-4AB7-A40D-3802B2AF5FC2&displaylang=en。
请记住在安装内容之前备份系统,创建还原点等。
另一个想法 - 重新安装失败的appliacation本身。它可能带有自己的VC ++可再发行组件副本,重新安装可能有所帮助。 ESP。尝试使用Windows 7的兼容模式重新安装它(可能回到Vista或XP兼容性)可能会更有效。
重申 - 你必须尝试,而且我不知道上述任何一个想法对你有好处,或者甚至一定不会造成伤害。也就是说,如果我遇到类似的问题,这些是我尝试的步骤。 HTH!