在C ++中嵌入Python(CPython API)

时间:2016-01-26 10:50:21

标签: python c++ qt

我试图在我的C ++项目中嵌入Python(Qt5)。我的项目看起来像这样:

python_test.pro:

QT += core
QT -= gui

TARGET = python_test
CONFIG += console
CONFIG -= app_bundle

TEMPLATE = app

SOURCES += main.cpp

INCLUDEPATH += C:\Tools\Python\Python35_64\include

LIBS += -LC:\Tools\Python\Python35_64\ -lpython3

main.cpp中:

#include <Python.h>
#include <QCoreApplication>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    Py_Initialize();
    PyRun_SimpleString("from time import time,ctime\n"
                   "print('Today is', ctime(time()))\n");
    Py_Finalize();
    return a.exec();
}

编译时,我收到链接器错误,告诉我:main.cpp:-1: Error: undefined reference to `__imp_PyRun_SimpleStringFlags'

有趣的是,可以找到Py_Initialize()Py_Finalize()。我读了一些关于定义Py_LIMITED_API的东西,它隐藏了PyRun_SimpleStringFlags函数。但我不明白。

如果C API中没有这些函数,我应该如何运行Python脚本/文件/字符串?

设定:

1 个答案:

答案 0 :(得分:1)

我在我的计算机上测试了这个(虽然没有Qt),-lpython35编译成功,而-lpython3没有编译。

所以

LIBS += -LC:\Tools\Python\Python35_64\ -lpython35

而不是

LIBS += -LC:\Tools\Python\Python35_64\ -lpython3