Py_Initialize未定义的引用

时间:2017-05-22 21:58:34

标签: python c++

我想在C ++代码中添加python函数。

我在gtk中创建了一个GUI(在Raspberry PI上),现在我想使用一个易于在python中处理的相机模块。 (我想在按下按钮时直接启动视频。)

所以我添加了文件Python.h

#include <python3.4m/Python.h>
#include <python3.4m/pythonrun.h>

然后我认为它应该有用,但是当我尝试编译Py_Initialize()

我收到错误:

  

对Py_Initialize的未定义引用。

我认为这很奇怪,因为当我输入时,出现了Py_Initialize的选择。

4 个答案:

答案 0 :(得分:0)

就标题而言,你应该没问题,因为它已经编译但在链接时失败了。

现在您需要链接Python库。这样做的方式很大程度上取决于您使用的工具链。

答案 1 :(得分:0)

我尝试了另一种方式,

gcc -I / pathtopython3.4m file.c -lpython3.4m

但后来我得到错误:致命错误:gtk / gtk.h没有这样的文件或目录 但是当我在Codeblocks中编译它时,这只适用于Python-函数未定义。

有人知道我能做什么吗?

答案 2 :(得分:0)

也许您可以看到my answer in another question:

  

如果已安装python 3.x,则此命令可以正常工作:

g++ hw.cpp `/usr/bin/python3-config --cflags` `/usr/python3-config --ldflags`
     

顺便说一句,您应该检查一下gcc和python版本。

     

我知道,如果gcc版本是5.4,而python版本是3.7,则它不起作用。(python 3.5>是有效的)

     

实际上,当您运行/usr/bin/python3-config --cflags时,它是编译选项。

答案 3 :(得分:0)

在gcc命令行上设置python include文件夹及其静态库,并将python动态库放在LD_LIBRARY_PATH上。在Py_Initialize()之前,请不要忘记使用Py_SetPythonHome()设置python home。这些步骤必须足以编译和运行代码。