尝试将python解释器嵌入到c ++应用程序中。认为这将是直截了当的,但我认为与链接有关。唯一不寻常的是我正在尝试使用特定的Anaconda包。简单的c ++代码是:
# include <Python.h>
int main()
{
printf("before initialize");
Py_Initialize();
printf("after initialize");
PyRun_SimpleString("print('Hello from Python')");
Py_Finalize();
return 0;
}
编译我使用:
gcc pythonTest.cc -I/path/to/anaconda/include/python3.6m -L/path/to/anaconda/lib/python3.6/config-3.6m-x86_64-linux-gnu -lm -lpthread -ldl -lutil -lpython3.6m -o pytest
它确实编译但是当我运行简单的程序时,我得到:
Fatal Python error: PyThreadState_Get: no current thread
before initializeAborted
我检查了程序看到的路径,它确实包含了我使用includes和lib指定的相同python可执行文件的路径。然而,一些搜索似乎表明,被调用的python版本在某种程度上与链接的不同。关于如何解决这个问题,我有点不知所措。
答案 0 :(得分:-1)
尝试使用:
进行编译gcc pythonTest.cc -I/$HOME/anaconda3/include/python3.6m -lpython3.6m