未找到 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++ 'python33_d.lib' 中使用 Python 3.3