C++ 中的嵌入式 Python 无法执行 pygame
Embedded Python in C++ can't execute pygame
这个想法是从C++应用程序中运行python脚本。从C++端,调用 PyRun_SimpleString(( 方法执行 python 脚本。在python脚本中,首先导入pygame库,并打开一个新窗口。
// g++ -I/usr/include/python3.7m/ -lpython3.7m demo.cpp
#include <Python.h>
int main(int argc, char *argv[])
{
wchar_t progname[FILENAME_MAX + 1];
mbstowcs(progname, argv[0], strlen(argv[0]) + 1);
Py_SetProgramName(progname);
Py_Initialize();
char s[] = "import pygame";
PyRun_SimpleString(s);
Py_Finalize();
return 0;
}
该程序编译得很好,但是在执行C++二进制代码后,会出现以下错误消息。在预期中,argv[0] 参数有问题,Py_SetProgramName(( 被正确执行。
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/lib64/python3.7/site-packages/pygame/__init__.py", line 80, in <module>
os.environ['SDL_VIDEO_X11_WMCLASS'] = os.path.basename(sys.argv[0])
IndexError: list index out of range
你必须设置 argc 和 argv
PySys_SetArgv(argc, argv);
https://docs.python.org/3/c-api/init.html#c.PySys_SetArgv
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- C++,系统无法执行指定的程序
- 使用C++中的模板和运算符重载执行矩阵运算
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 执行函数时导致崩溃的变量
- 无论条件是否为true,if总是在c++中执行
- 当函数模板参数是具有默认参数的类模板时,函数模板参数的推导如何执行
- 在C++中对T*类型执行std::move的意外行为
- 使用QProcess执行命令,并将结果存储在QStringList中
- 如何在没有信号的情况下从C++执行QML插槽
- 如何确认我的constexpr表达式实际上已经在编译时执行
- C++17中的并行执行策略
- QML按钮点击功能执行顺序
- 程序在执行程序的其余部分之前退出
- 为什么catch中的代码没有被执行
- C++从其他 constexpr 创建 lambda 不能按顺序执行 Constexpr
- 将执行、作业和WinAPI相乘
- 对字符数组中的元素执行逐位操作
- 为什么g++在未执行的代码处标记强制转换错误
- C++ 中的嵌入式 Python 无法执行 pygame