python调用C++代码例子
2023-12-13 21:44:32
my_module.cpp
#define PY_SSIZE_T_CLEAN
#define BOOST_PYTHON_MODULE_NAME my_module
//#include <pybind11/pybind11.h>
#include <boost/python.hpp>
int add(int a, int b) {
return a + b;
}
//PYBIND11_MODULE(libmy_module, m) {
// m.def("add", &add, "Prints a greeting from C++");
//}
BOOST_PYTHON_MODULE(libmy_module) {
using namespace boost::python;
def("add", add);
}
CMakeLists.txt
cmake_minimum_required(VERSION 3.12)
project(kalibr-example)
# 查找 Boost.Python
find_package(Boost REQUIRED COMPONENTS python)
include_directories(${Boost_INCLUDE_DIRS})
link_directories(${Boost_LIBRARY_DIRS})
set(Python_ADDITIONAL_VERSIONS 3.11) # 替换为您的 Python 版本
find_package(PythonLibs REQUIRED)
include_directories(${PYTHON_INCLUDE_DIRS})
#
#set(pybind11_DIR /home/local/.local/lib/python3.8/site-packages/pybind11/share/cmake/pybind11/)
#find_package(pybind11 REQUIRED)
add_library(my_module MODULE my_module.cpp)
#target_link_libraries(my_module PRIVATE pybind11::module)
target_link_libraries(my_module PRIVATE Boost::python)
python :main.py
import sys
import libmy_module
result = libmy_module.add(1, 2)
print ("result:{}".format(result))
出现的一个报错:
原因分析:
cmake生成的动态库名字为libmy_module.so
要和cpp代码中红框处的变量名保持一致才行
文章来源:https://blog.csdn.net/lin_FS/article/details/134981241
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!