从anaconda PyThreadState在C / C ++中嵌入Python

尝试将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和libs指定的相同的python可执行文件的路径。 然而,一些搜索似乎表明,python版本被调用的方式与链接方式有所不同。 我对如何解决这个问题感到不知所措。


尝试编译使用:

gcc pythonTest.cc -I/$HOME/anaconda3/include/python3.6m -lpython3.6m
链接地址: http://www.djcxy.com/p/60535.html

上一篇: Embedding Python in C/C++ from anaconda PyThreadState

下一篇: c++