未找到 C++ python 库。代码块 GNU GCC

Posted

技术标签:

【中文标题】未找到 C++ python 库。代码块 GNU GCC【英文标题】:C++ python library not found. Code Blocks GNU GCC 【发布时间】:2012-06-26 19:58:54 【问题描述】:

所以这是我第一次尝试在 C++ 程序中使用 python,我在链接库时遇到了一些问题。

所以我使用带有 GNU GCC 编译器的 Code Blocks IDE,并且我有以下主程序:

#include <Python.h>
#include <iostream>

using namespace std;

int main()

    cout<<"starting interpreter."<<endl;
    Py_Initialize();
    PyRun_SimpleString("print 'Im in python!'");
    Py_Finalize();
    return 0;

我的链接设置如下(在代码块 GUI 中用于编译器和调试器设置):

linker settings:
    link libraries:
        C:\Python27\libs\libpython27.a
search directories:
    linker:
        C:\Python27\libs

有什么我想念的吗?还是我做错了?

构建消息:

C:\Users\users_name\Desktop\PythonIntegratedTest\main.cpp|1|error: Python.h: No such file or directory|
C:\Users\users_name\Desktop\PythonIntegratedTest\main.cpp||In function 'int main()':|
C:\Users\users_name\Desktop\PythonIntegratedTest\main.cpp|9|error: 'Py_Initialize' was not declared in this scope|
C:\Users\users_name\Desktop\PythonIntegratedTest\main.cpp|10|error: 'PyRun_SimpleString' was not declared in this scope|
C:\Users\users_name\Desktop\PythonIntegratedTest\main.cpp|11|error: 'Py_Finalize' was not declared in this scope|

【问题讨论】:

您应该复制、粘贴并发布您遇到的确切错误——这很重要。 请在搜索目录中将 ~\libs 更改为 ~\include 我试过了,同样的错误发生了:/我是否也必须更改我的链接库? 你确定你在正确的地方改变了它并且错误保持完全相同吗?对于 CodeBlocks,转到 设置 - 编译器和调试器 - 搜索目录 - 编译器 并将 C:\Python27\include 添加到列表中。这应该可以解决 Python.h not found 问题和其他问题。 @NiklasR 好的,所以我改变了它,现在我只是收到有关未定义的 Python 函数引用的错误。 【参考方案1】:

错误消息显示Python.h: No such file or directory。这意味着,编译器找不到请求的文件。您的搜索目录中的路径不正确。需要包含的头文件通常位于名为include的目录中。对于 Windows 上的 Python,在您的情况下是 C:\Python27\include

在CodeBlocks中,可以修改Settings - Compiler and debugger - Search directories - Compiler下的include搜索目录。

完成此操作后,您将收到 undefined reference to 错误。错误消息告诉您,您在代码中使用了一个函数,编译器找不到其实现,而只能找到声明(在头文件中)。

实现可以在源文件或静态库中使用。 Windows 上的 CPython 带有预构建的静态库。在您的情况下,它位于C:\Python27\libs\python26.lib

修改后,编译应该会成功。

【讨论】:

【参考方案2】:
main.cpp|1|error: Python.h: No such file or directory

是编译时错误,因为您的编译器在包含搜索路径中找不到 Python.h。如果您在命令行上使用 gcc,我会告诉您指定 Python 安装的包含文件夹,如下所示:

-I/path/to/Python27/include

(在我的 Windows Python 2.7 安装中,C:\Python27\include

我不确定您将如何在 CodeBlocks 中执行此操作,但肯定有一种方法可以指定您的“标头包含路径”。

请注意,这与“库搜索路径”或“链接器搜索路径”不同——它专门用于编译器和标头搜索位置。

【讨论】:

以上是关于未找到 C++ python 库。代码块 GNU GCC的主要内容,如果未能解决你的问题,请参考以下文章

GNU g++ 内联汇编块,如 Apple g++/Visual C++?

C++ 库编程错误:ld:未找到架构 x86_64 的符号

未找到在 C++ 'python33_d.lib' 中使用 Python 3.3

使用本机库(仅限 C,无 C++),但未找到实现

使用 ctypes 的 .dll 中的 python 中的 C++ 函数 - 未找到函数并且访问冲突

哪种算法用于计算 GNU C++ 标准库中的指数函数?