繁体   English   中英

问题产生应用程序

[英]Problem spawning application

天哪,这太奇怪了,我不知道该说些什么。 简短的版本是我有一个模拟器应用程序,当用户要求我从我的应用程序产生。 它最近停止工作,虽然我可以从命令行或开始菜单运行模拟器。 这可能是由于移动到VS2010或Windows 7或我没有注意到审查源控制差异的东西。

我有第二个模拟器,我尝试以相同的方式生成,它工作正常。

默认情况下,为了这个目的,我在CreateProcess中使用Qt3的QProcess包装器,但是我使用系统,我自己的CreateProcess和ShellExecute获得相同的行为。

但是,cmd.exe“/ c application params”的ShellExecute确实为我提供了更多信息。 我得到了对话框

“程序无法启动,因为您的计算机缺少MSVCR80.dll。请尝试重新安装该程序以解决此问题。”

不方便的是,父应用程序和第二个模拟器都使用MSVCR80.dll。

将MSVC * 80.dll从g:\\ windows \\ winsxs \\ x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4927_none_d08a205e442db5b5复制到与我的可执行文件相同的目录时,错误消息将更改为

“运行时错误!
程序:g:\\ path \\ to \\ app.exe
R6034
应用程序尝试错误地加载C运行时库。
有关更多信息,请联系应用程序的支持团队。

其次是

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

而且,再一次,应用程序在命令行中运行良好,并且这些dll就位。


更新:

我怀疑它可能与环境有关,所以改变了我的ShellExecute机制来做cmd / c set && app params。 我设置了一个带有相同参数的cmd.exe,我的应用程序现在崩溃了。 当我找出原因时会更新:)

它是MATLAB的组件运行时工具,它将我的进程的PATH变量修改为不良影响。 它在它自己的dir之前充满了dll并且造成了严重破坏。

我使用的一个愚蠢的工具在PATH上做了一个setenv,在它之前添加了一个动态加载一些dll的目录,但是后来搞砸了我的应用程序。 最后我用GetEnvironmentStrings如图所示的最后一个例子在这里 ,擦除在PATH的环境变量中的第一项,并发送新的(原来的)环境QProcess中,它包装CreateProcessA。

您需要安装CRT

可能有用 - 如果它打破了,你可以保留两件:-)

尝试从此处安装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!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM