【发布时间】:2017-08-30 10:58:48
【问题描述】:
我有一个可执行程序myApp(或Windows 中的myApp.exe)。我想在 C/C++ 程序中调用这个可执行文件,在 Qt 中使用 system("myApp") 或 QProcess:execute("myApp")。
我想从myApp 获得多个返回值,所以在调用这个可执行文件时,我将 pointers 作为参数传递,就像这样(在 Qt 中)
float *pStates = new float[nState];
float *pControl = new float[nControl];
pControl[0] = 0.1;
pControl[1] = 0.2;
QString proStr;
proStr = "myApp ";
for (int i = 0; i < nState; i++)
{
proStr += (QString::number((uint64_t)pStates + i * sizeof(float)) + " ");
}
for (int i = 0; i < nControl; i++)
{
proStr += (QString::number(pControl[i]) + " ");
}
QProcess::execute(proStr);
proStr 字符串可能看起来像
myApp 140483171852384 140483171852388 140483171852392 140483171852396 140483171852400 0.1 0.2
这里的 140483xxx 数字是 pStates 的指针或物理地址。
myApp 的代码看起来像
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
if (argc != 8)
{
return 1;
}
float *x = atoi(argv[1]);
float *y = atoi(argv[2]);
float *z = atoi(argv[3]);
float *psi = atoi(argv[4]);
float *v = atoi(argv[5]);
float u = atof(argv[6]);
float a = atof(argv[7]);
*x = 1;
*y = 2;
*z = 3;
*psi = 1.23;
*v = 3.21;
return 0;
}
但这似乎不起作用。
那么,我怎样才能从外部可执行文件中获得多个返回值?
【问题讨论】:
-
您可以让其他程序将其输出写入标准输出,然后您使用
popen调用它 -
每个进程都有自己的虚拟地址空间。将地址传递给不同的进程是没有意义的。
标签: c++ c pointers arguments return-value