在使用boost的c ++中你好世界python扩展?

时间:2011-05-15 07:49:52

标签: c++ linux compiler-errors boost-python

这是我使用boost进行python扩展的第一次尝试。有人可以帮助我理解导致编译错误的原因吗?


#include <iostream>
using namespace std; 
void say_hello(const char* name) {
    cout << "Hello " <<  name << "!\n";
}

#include <boost/python/module.hpp>
#include <boost/python/def.hpp>
using namespace boost::python;

BOOST_PYTHON_MODULE(hello)
{
    def("say_hello", say_hello);
}

user @ host:〜$ g ++ main.cpp -o test.so

在/usr/include/boost/python/detail/prefix.hpp:13:0中的文件中,来自/usr/include/boost/python/module.hpp:8,来自main.cpp:8: /usr/include/boost/python/detail/wrap_python.hpp:50:23:致命错误:pyconfig.h:没有这样的文件或目录编译终止。

3 个答案:

答案 0 :(得分:13)

  

/usr/include/boost/python/detail/wrap_python.hpp:50:23:   致命错误:pyconfig.h:没有这样的文件   或目录编译终止。

这一行确切地说明了为什么它不起作用。您的编译器不知道pyconfig.h文件在哪里。你有两个选择:

  1. 将pyconfig.h放在一个位置 g ++知道(即你的 项目目录)
  2. 添加-I DIRECTORY(这是大写i, 不小写L)标志为g ++ 将为头文件制作g ++搜索DIRECTORY
  3.   

    g ++ -I / path / to / my / include / files main.cpp

答案 1 :(得分:0)

如果您在NetBeans中遇到此问题,则只需在NetBeans附加包含选项中添加“/ usr / include / python 2.7 /”文件夹。您将在属性中获得此附加包含选项。

答案 2 :(得分:-3)

您需要将pyconfig.h放在同一目录