• 5565阅读
  • 3回复

system函数调用与运行cmd.exe效果不同 [复制链接]

上一主题 下一主题
离线wjz2047
 

只看楼主 倒序阅读 楼主  发表于: 2013-11-03
我的系统是win7 64位,用vs2010编写了一个程序。程序中需要调用某个文件夹下的exe应用程序。目录为:E:\cmpmvs-v0.6.0-binary-win64-cuda\CMPMVS_0_6_0\CMPMVS.exe。可能由于这个exe本身的原因,直接调用会出现错误,于是我在cmd窗口中是这样写的。分3步
1.输入e:
2.输入cd E:\cmpmvs-v0.6.0-binary-win64-cuda\CMPMVS_0_6_0
3.输入CMPMVS.exe E:/cmpmvs-v0.6.0-binary-win64-cuda/CMPMVS_0_6_0/ini/default.ini
程序运行成功。
然后我在代码中把上面3步用system函数调用来实现
system("e:");
system("cd E:\cmpmvs-v0.6.0-binary-win64-cuda\CMPMVS_0_6_0");
system("CMPMVS.exe E:/cmpmvs-v0.6.0-binary-win64-cuda/CMPMVS_0_6_0/ini/default.ini");
结果出错,我觉得原因是:前两步没有实现cmd窗口中前两步的工作。
大家怎么看呢?按道理两者效果应该一样才对,希望小伙伴们能帮帮我
离线wjz2047

只看该作者 1楼 发表于: 2013-11-03
补充一下:直接调用exe会提示缺少某某文件,而通过cd命令将目录切换到exe所在文件夹目录再调用exe则没有问题。通过system函数,这个exe已经开始执行了,说明前两步的工作是对的,不然这个exe应该不会执行。可是系统仍然报告缺少某某文件,说明当前目录还是有问题的,这有点自相矛盾。关键是system函数调用与运行cmd.exe效果为什么会不同呢
离线wjz2047

只看该作者 2楼 发表于: 2013-11-03
闹笑话了,问题解决了,只使用一次system函数调用实现上面3步即可,like this
system("e:&cd E:/cmpmvs-v0.6.0-binary-win64-cuda/CMPMVS_0_6_0&CMPMVS.exe E:/cmpmvs-v0.6.0-binary-win64-cuda/CMPMVS_0_6_0/ini/default.ini");
哈哈
离线roywillow

只看该作者 3楼 发表于: 2013-11-03
其实我觉得你连cd都用不到,直接用绝对路径应该就可以了吧
另外可以考虑一下用QProcess
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
快速回复
限100 字节
 
上一个 下一个