查看完整版本: [-- QProcess怎么调用路径含空格的环境变量中的外部程序 --]

QTCN开发网 -> Qt基础编程 -> QProcess怎么调用路径含空格的环境变量中的外部程序 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

qqlinx 2018-04-19 22:52

QProcess怎么调用路径含空格的环境变量中的外部程序

开发环境VS2013+MinGW
安装MinGW到C:\Program Files\MinGW下,然后把bin加入到环境变量。
用QProcess start调用gcc, 启动失败。
如果把MinGW安装到C:\MinGW下,就可以正常启动。
现在问题应该就是QProcess先在环境变量找到gcc路径,然后启动gcc,
但是路径含有空格,导致start fail。
请问这种情况怎么解决?

qqlinx 2018-04-19 23:08
我只是用MinGW举例,实际情况MinGW安装时不含空格。但是有些程序,客户可能会安装到C:\Programe Files或D:\Program Files, 都有空格。

fox123 2018-04-20 08:33
将被调用软件的全路径作为第一个参数传给QProcess就可以了

cahwxy 2018-04-20 09:11
Qt对中文路径以及空格处理都有问题,最好的办法是避开这个

Qt以及C++入门和进阶经验、技术分享在线交流会。
https://www.zhihu.com/lives/967361544187772928
欢迎加入讨论!

dbzhang800 2018-04-20 14:55
cahwxy:Qt对中文路径以及空格处理都有问题,最好的办法是避开这个
Qt以及C++入门和进阶经验、技术分享在线交流会。
https://www.zhihu.com/lives/967361544187772928
欢迎加入讨论! (2018-04-20 09:11) 

Qt对中文处理没有任何问题,

顶多是C++标准unicode支持比较晚,VS系列C++编译器在VS2015Update2 之前,对Utf-8支持不太友好,仅此而已

qqlinx 2018-04-21 21:59
fox123:将被调用软件的全路径作为第一个参数传给QProcess就可以了 (2018-04-20 08:33) 

这个方法我试过,是可以。不过不知道安装路径,代码没法把全路径写死。
在环境变量里单独配个安装路径变量可以解决,但是还是希望让客户不做这一步。
有没有好的建议?

stlcours 2018-04-23 15:35
加双引号试试

songhuirong1 2018-04-23 16:31
加双引号就可以解决

qqlinx 2018-04-23 22:34
songhuirong1:加双引号就可以解决 (2018-04-23 16:31) 

能具体点吗?是全路径加双引号?
m_proc->start("C:/Program Files/MSBuild/12.0/Bin/vbc.exe", args2);
这样用全路径是可以的。
但是我想用把C:/Program Files/MSBuild/12.0/Bin加到环境变量,然后用
m_proc->start("vbc", args2);

songhuirong1 2018-04-26 10:48
qqlinx:能具体点吗?是全路径加双引号?
m_proc->start("C:/Program Files/MSBuild/12.0/Bin/vbc.exe", args2);
这样用全路径是可以的。
但是我想用把C:/Program Files/MSBuild/12.0/Bin加到环境变量,然后用
....... (2018-04-23 22:34) 

  QProcess process;
  QStringList env = QProcess::systemEnvironment();
  env << "TMPDIR=C:\\MyApp\\temp"; // Add an environment variable
  process.setEnvironment(env);
  process.start("myapp");
这是Qt帮忙文档里的示例


查看完整版本: [-- QProcess怎么调用路径含空格的环境变量中的外部程序 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled