0

所以这是我第一次尝试在 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|
4

2 回答 2

1

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

在 CodeBlocks 中,您可以修改Settings - Compiler and debugger - Search directories - Compiler.

完成此操作后,您将获得对错误的未定义引用。错误消息告诉您,您在代码中使用了一个函数,编译器找不到其实现,而只能找到声明(在头文件中)。

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

更改之后,编译应该会成功。

于 2012-06-27T06:23:55.997 回答
0
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 中执行此操作,但肯定有一种方法可以指定您的“标头包含路径”。

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

于 2012-06-26T20:36:18.687 回答