Boost Python基本示例不起作用
Boost Python basic example does not work
尝试Boost Python快速入门中最简单的Hello World示例
#include <boost/python.hpp>
char const* greet()
{
return "hello, world";
}
BOOST_PYTHON_MODULE(hello_ext)
{
using namespace boost::python;
def("greet", greet);
}
在Windows上使用下面的CMake编译项目:
cmake_minimum_required(VERSION 3.2)
project(hello_ext CXX)
set(TARGET hello_ext)
set(BOOST_MIN_VERSION "1.61.0")
set(Boost_ADDITIONAL_VERSIONS "1.61.0" "1.61")
set(BOOST_ROOT ${MY_BOOST_DIR})
set(Boost_USE_STATIC_LIBS OFF)
set(Boost_USE_STATIC_RUNTIME OFF)
set(Boost_USE_MULTITHREADED ON)
find_package(PythonLibs 3.4 REQUIRED )
find_package(Boost 1.61.0 COMPONENTS python REQUIRED)
file(GLOB SOURCES *.cpp)
include_directories(${INCLUDE_DIRS} ${Boost_INCLUDE_DIRS} ${PYTHON_INCLUDE_DIRS})
python_add_module(${TARGET} ${SOURCES})
target_link_libraries(${TARGET} ${Boost_PYTHON_LIBRARY} ${PYTHON_LIBRARIES})
模块成功编译为hello_ext.pyd。试图从放置在同一目录下的Python脚本访问它:
import hello_ext
print(hello_ext.greet())
获取以下执行结果:
python3 test_cpp.py
导入错误:DLL加载失败:无法找到指定的模块
也,尝试放置hello_ext。pyd到Python DLL目录(C:/Python34/DLL),结果相同
Windows 7 32位
c++编译器:Visual c++ 2015
Python 3.4.2, Boost 1.61
更新:解决,见下文
我添加了一个包含Boost Python *的目录。lib和*.dll文件到PATH。它使示例工作
这是针对mac用户的,因为我尝试了上面的解决方案,它不适合我使用osx el capitan。我有两个CMakeLists.txt的工作,但是,我不认为他们是一个问题的基础上,https://gitlab.kitware.com/cmake/cmake/issues/16335。
PROJECT(example)
set(CMAKE_CXX_STANDARD 11)
set( CMAKE_EXPORT_COMPILE_COMMANDS ON )
cmake_policy(SET CMP0042 NEW)
set(EIGEN_DIR "/usr/local/include/eigen3/" )
set(PYTHON_INCLUDE_DIRS "//anaconda/include/python2.7")
set(PYTHON_LIBRARY "//anaconda/lib/libpython2.7.dylib")
find_package(Boost 1.66.0 COMPONENTS python)
if(Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS} ${EIGEN_DIR} ${PYTHON_INCLUDE_DIRS} include)
set(Boost_USE_STATIC_LIBS OFF)
set(Boost_USE_MULTITHREADED ON)
set(Boost_USE_STATIC_RUNTIME OFF)
add_library (yay MODULE src/example_ext.cpp)
target_link_libraries(yay ${Boost_LIBRARIES} ${PYTHON_LIBRARY})
endif()
PROJECT(example)
set(CMAKE_CXX_STANDARD 11)
set( CMAKE_EXPORT_COMPILE_COMMANDS ON )
cmake_policy(SET CMP0042 NEW)
set(EIGEN_DIR "/usr/local/include/eigen3/" )
find_package(Boost 1.66.0 COMPONENTS python3)
if(Boost_FOUND)
set(Boost_USE_STATIC_LIBS OFF)
set(Boost_USE_MULTITHREADED ON)
set(Boost_USE_STATIC_RUNTIME OFF)
find_package(PythonLibs REQUIRED)
include_directories(${Boost_INCLUDE_DIRS} ${EIGEN_DIR} ${PYTHON_INCLUDE_DIRS} include)
add_library (yay SHARED src/example_ext.cpp)
target_link_libraries(yay ${Boost_LIBRARIES} ${PYTHON_LIBRARY})
endif()
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 为什么这在 c++ 中不起作用,但在 python 中工作
- 使用 pybind11 嵌入 python。虚拟环境不起作用
- 像在 Python 中一样C++循环中的参数解析。为什么不起作用?
- import_array在嵌入式Python C API的调试版本中不起作用
- C++和Python ZeroMQ 4.x PUB/SUB示例不起作用
- pybind11:Python 到 C++ 数据类型转换不起作用
- 尝试将工作python程序转换为C++但不起作用
- Python:使用<cstdio>时与c ++命令行程序的通信不起作用
- Python "print"嵌入到 MPI 程序中时不起作用
- 将DLL与python一起使用(使用ctypes),不起作用
- 使用ctypes从Python调用C++方法不起作用
- Regex LookAround 在 python 中工作,但在 C++ 中不起作用
- Boost Python基本示例不起作用
- 带有 boost 的 Python 的 C++ 扩展不起作用
- 嵌入式 Python 指向 Python35 不起作用.zip 与 NumPy - 如何修复
- 指针的Boost.Python转换器不起作用
- Python 打包 int32 但不起作用?