【问题标题】:Boost.Python can't find pyconfig.h. Where does it need to go?Boost.Python 找不到 pyconfig.h。它需要去哪里?
【发布时间】:2013-06-04 09:35:07
【问题描述】:

我在 main.cpp 中写了一个非常简单的 c++ 函数:

#include <iostream>
using namespace std;

int SomeCalculation(float x){
    int decision = 0;
    if (x > 1){
        decision = 1;
    }
    return decision;
}

我现在正在尝试使用 Boost.Python 将其编译为共享库。为此,我创建了 decision.cpp:

#include <boost/python.hpp>
BOOST_PYTHON_MODULE(decision)
{
    using namespace boost::python;
    def("main", main);
}

不幸的是,我收到以下错误:

In file included from /usr/include/boost/python/detail/prefix.hpp:13:0,
                 from /usr/include/boost/python/args.hpp:8,
                 from /usr/include/boost/python.hpp:11,
                 from decision.cpp:1:
/usr/include/boost/python/detail/wrap_python.hpp:50:23: fatal error: pyconfig.h: File or folder does not exist.
compilation terminated.

因为我不知道这个文件可能在哪里,所以我做了一个简单的sudo find / -name pyconfig.h,它找到了几个 pyconfig.h 文件。所以我只是将我认为最通用的文件版本复制到了我正在工作的文件夹中:

cp /usr/include/python2.7/pyconfig.h /home/kram/c++/cmod/pyconfig.h

再次运行我的编译命令 (g++ -fPIC -g -ggdb -c decision.cpp -o decision.so) 会出现与以前相同的错误。

有人知道我如何解决这个 pyconfig.h 依赖项吗?

[编辑] 添加的代码片段

【问题讨论】:

  • AFAIK 您应该引用正确的标头并链接到 python 库。我认为这是通过-lPython-IPython 完成的。

标签: c++ python import shared-libraries boost-python


【解决方案1】:

尝试命令:

g++ -g -shared -fPIC -I/usr/include/python2.7 decision.cpp -lpython2.7 -lboost_python -o decision.so

【讨论】:

  • 谢谢。这让我更进一步。我现在收到一个新错误。我已经在 main.cpp 中声明了我想要导入的函数 (SomeCalculation()),并且 boost.python 包装器在文件 decision.cpp 中。当我运行您建议的命令时,我现在收到一条错误消息,提示 decision.cpp: In function ‘void init_module_decision()’: decision.cpp:6:17: error: ‘main’ is not declared in this scope.你知道这里出了什么问题吗?
  • @kramer65 如果没有那部分代码,我无法告诉你有什么问题,你在这个函数中使用main
  • @Tsarloann - 我将我的代码添加到我最初的问题中。这是否提供了我在这里做错了什么的线索?
  • @kramer65 您应该将def("main", main); 更改为def("SomeCalculation", SomeCalculation);
  • @kramer65 我已经进行了一些测试并稍微更改了编译命令 - 现在在链接器参数之前提到了 decision.cpp。这很重要。注意!
猜你喜欢
  • 2022-08-18
  • 1970-01-01
  • 1970-01-01
  • 2012-01-18
  • 2015-02-14
  • 2020-01-21
  • 1970-01-01
  • 2014-09-09
  • 1970-01-01
相关资源
最近更新 更多