我一直在网站上寻找类似的答案,而我设法找到的最接近的是this one。答案给出了以下C程序来实现这一目标:
//My code file
#include <stdio.h>
#include <Python.h>
void main()
{
FILE* file;
int argc;
char * argv[3];
argc = 3;
argv[0] = "mypy.py";
argv[1] = "-m";
argv[2] = "/tmp/targets.list";
Py_SetProgramName(argv[0]);
Py_Initialize();
PySys_SetArgv(argc, argv);
file = fopen("mypy.py","r");
PyRun_SimpleFile(file, "mypy.py");
Py_Finalize();
return;
}
我想做类似的事情(使用python 3 ,我不知道这是否有所不同)并使用matplotlib
生成输出。但是,我不知道如何使其适应C ++程序,特别是考虑到函数所需的类型(例如wchar_t**
argv
)。有没有办法在不必对C类型执行各种类型转换的情况下执行此操作?
答案 0 :(得分:-2)
我不确定Python.h能为您提供什么,但如果您只想运行cmd命令,则可以执行此操作:
char* filename = "mypy.py";
char* arg = "-m";
char* argVal = "/tmp/targets.list";
char temp[512];
sprintf(temp, "python3 %s %s %s", filename, arg, argVal);
int errCode = system((char *)temp);
if (errCode){
std::cout << "Error code returned: " << errCode << std::endl;
return 1;
}