使用使用Boost / python.hpp的CMake编译c ++程序

Hassec

我目前正在尝试使用CMake编译C ++文件。但是由于我使用的是Boost :: python,因此无法编译。我设置了一个小测试文件来弄清楚我需要做什么,但是我无法使其正常工作。任何帮助将不胜感激!!

测试文件:

#include <Python.h>
#include <boost/python.hpp>
#include <iostream>

using std::cout;
using std::endl;

int main()
{
    namespace py = boost::python;

    Py_Initialize();

    // Retrieve the main module's namespace
    py::object global(py::import("__main__").attr("__dict__"));

    py::exec("print 'Hello from Python!' \n", global, global);

    return 0;
}

如果我只用它就会编译,

clang++ -I/usr/include/python2.7 -lpython2.7 -lboost_python -std=c++11 boosttest.cpp -o boosttest

我尝试了此CMakeLists.txt以使其正常工作。

cmake_minimum_required(VERSION 3.2)

FIND_PACKAGE(PythonLibs)
FIND_PACKAGE(Boost)

INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS} ${PYTHON_INCLUDE_DIRS})
LINK_LIBRARIES(${Boost_LIBRARIES} ${PYTHON_LIBRARIES})

add_executable(Test1 boosttest.cpp)
target_link_libraries(Test1 ${Boost_LIBRARIES} ${PYTHON_LIBRARIES})

我得到的是

undefined reference to `boost::python::import(boost::python::str)'

以及更多相同类别的东西。

Hassec

感谢您的帮助Mark,感谢我加入后的新错误

find_package(Boost REQUIRED python)

我能够弄清楚问题是CMake为python 3.4选择了libs,但是Boost是针对2.7构建的。

因此,解决方案是包括这样的版本:

FIND_PACKAGE(PythonLibs 2.7 REQUIRED)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用CMake使Python脚本编译和运行C ++程序

来自分类Dev

链接/编译使用boost / filesystem.hpp的程序

来自分类Dev

无法在C ++中使用Boost和Eureqa编译程序

来自分类Dev

交叉编译c / c ++ / cuda程序时尝试使用CMake

来自分类Dev

如何使用cmake编译包含MPI的C程序

来自分类Dev

使用子模块应用程序编译Modular Boost 1.55.0

来自分类Dev

使用子模块应用程序编译Modular Boost 1.55.0

来自分类Dev

无法使用boost :: spirit和Intel C ++编译器编译程序

来自分类Dev

使用boost:odeint的简单C ++程序中的断言错误

来自分类Dev

使用 CMake 使用多配置编译 Boost

来自分类Dev

cmake不会使用pthreads构建Linux c ++ 11交叉编译程序

来自分类Dev

编写Python脚本以通过CMake编译和运行C ++程序

来自分类Dev

编写Python脚本以通过CMake编译和运行C ++程序

来自分类Dev

强制CMake / VisualStudio使用Boost.Python的静态库

来自分类Dev

如何使用CMake RPath进行Boost.Python

来自分类Dev

在OS X上将Boost Python与CMake结合使用

来自分类Dev

std :: atomic作为类成员:使用boost / python.hpp时使用删除的函数错误

来自分类Dev

使用BOOST.python从C ++将结构返回到Python

来自分类Dev

使用boost :: python将虚拟成员函数从C ++暴露给Python

来自分类Dev

使用BOOST.python从C ++将结构返回到Python

来自分类Dev

我无法编译,并使用Python脚本运行Java程序

来自分类Dev

如何编译使用python 3.8的PyQt5程序

来自分类Dev

如何使用GStreamer编译C / C ++程序

来自分类Dev

如何使用 CMake 交叉编译 qt 应用程序

来自分类Dev

使用CMake在构建后运行C ++程序

来自分类Dev

使用VC ++进行C程序编译[2005]

来自分类Dev

使用Chilkat库编译C ++程序

来自分类Dev

需要帮助使用gcc编译C程序

来自分类Dev

使用OpenSSL编译DES的C程序

Related 相关文章

  1. 1

    如何使用CMake使Python脚本编译和运行C ++程序

  2. 2

    链接/编译使用boost / filesystem.hpp的程序

  3. 3

    无法在C ++中使用Boost和Eureqa编译程序

  4. 4

    交叉编译c / c ++ / cuda程序时尝试使用CMake

  5. 5

    如何使用cmake编译包含MPI的C程序

  6. 6

    使用子模块应用程序编译Modular Boost 1.55.0

  7. 7

    使用子模块应用程序编译Modular Boost 1.55.0

  8. 8

    无法使用boost :: spirit和Intel C ++编译器编译程序

  9. 9

    使用boost:odeint的简单C ++程序中的断言错误

  10. 10

    使用 CMake 使用多配置编译 Boost

  11. 11

    cmake不会使用pthreads构建Linux c ++ 11交叉编译程序

  12. 12

    编写Python脚本以通过CMake编译和运行C ++程序

  13. 13

    编写Python脚本以通过CMake编译和运行C ++程序

  14. 14

    强制CMake / VisualStudio使用Boost.Python的静态库

  15. 15

    如何使用CMake RPath进行Boost.Python

  16. 16

    在OS X上将Boost Python与CMake结合使用

  17. 17

    std :: atomic作为类成员:使用boost / python.hpp时使用删除的函数错误

  18. 18

    使用BOOST.python从C ++将结构返回到Python

  19. 19

    使用boost :: python将虚拟成员函数从C ++暴露给Python

  20. 20

    使用BOOST.python从C ++将结构返回到Python

  21. 21

    我无法编译,并使用Python脚本运行Java程序

  22. 22

    如何编译使用python 3.8的PyQt5程序

  23. 23

    如何使用GStreamer编译C / C ++程序

  24. 24

    如何使用 CMake 交叉编译 qt 应用程序

  25. 25

    使用CMake在构建后运行C ++程序

  26. 26

    使用VC ++进行C程序编译[2005]

  27. 27

    使用Chilkat库编译C ++程序

  28. 28

    需要帮助使用gcc编译C程序

  29. 29

    使用OpenSSL编译DES的C程序

热门标签

归档