我正在编写一个嵌入c++helloworld程序的Python代码, 正确设置必要的附加include/library目录。你知道吗
当我使用本地Windows调试器时,它会正确地显示“helloworld”。 但是如果我双击项目.exe上面说项目.exe已停止工作。
有人知道要做什么样的配置或步骤,以便在双击时project.exe
显示“Hello World”吗??你知道吗
代码如下所示:
你知道吗主.cpp你知道吗
#include <iostream>
#include <Python.h>
#include <string.h>
#include <stdlib.h>
using namespace std;
int main()
{
Py_Initialize();
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append('./')");
PyObject *pModule = PyImport_ImportModule("helloworld");
PyObject *pFunc = PyObject_GetAttrString(pModule, "printHello");
PyEval_CallObject(pFunc, NULL);
Py_Finalize();
return 0;
}
你知道吗你好世界.py你知道吗
def printHello():
print("Hello World!")
在黑暗中拍摄:
您应该检查
pModule
的返回值。我的猜测是,由于您在不同的目录中,导入失败,因此PyImport_ImportModule
函数返回NULL
(python会引发异常,但在这个上下文中不会,因为这是一个有限制的C API)这是脆弱的(可能是无用的):
你不知道当前目录是什么。最好使其相对于当前可执行文件,或者使用参数或环境变量进行配置。您可以使其相对于当前可执行文件,请参见Finding current executable's path without /proc/self/exe或Get path of executable
现在,当你尝试使用这个空指针时,程序崩溃了。从这个开始:
(属性获取相同:总是保护您的调用,或者更好:用抛出异常的C++方法包装它们)。你知道吗
相关问题 更多 >
编程相关推荐