Hello World Python 扩展在 C++ 中使用 boost

hello world python extension in c++ using boost?

本文关键字:boost C++ World Python 扩展 Hello      更新时间:2023-10-16

这是我使用 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:没有终止此类文件或目录编译。
/

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

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

  1. 将 pyconfig.h 放在G++ 知道(即你的项目目录)
  2. 添加 -I 目录(这是大写的 i,不是小写的 L) 标志到 g++ 那将使 g++ 搜索头文件的目录

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

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

你需要把pyconfig.h放在同一个目录中