python 加载.so--C++

本文介绍如何使用Boost开源库编写C++类,并为Python提供调用接口。重点讲解了在CarlaLidar模块中定义C++类,以及如何通过Boost.Python将类成员函数暴露给Python,实现跨语言调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 使用boost开源软件,编写C++类

2. 添加给python调用的接口

BOOST_PYTHON_MODULE(CarlaLidar)
{
    class_<CCarlaLidar>("CCarlaLidar")
            .def("lidar_convert_and_publish",&CCarlaLidar::lidar_convert_and_publish)
            .def("_lidar_buffer_parser",&CCarlaLidar::_lidar_buffer_parser)
            .def("_lidar_buffer_parser_cuda",&CCarlaLidar::_lidar_buffer_parser_cuda)
            ;
}

4. 字符串通过boost::python::str传递给c++,  在c++中使用 PyString_AsString(pos_buffer.ptr());来

creating build/lib.linux-x86_64-3.8 x86_64-linux-gnu-g++ -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -g -fwrapv -O2 -Wl,-Bsymbolic-functions -Wl,-z,relro -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 build/temp.linux-x86_64-3.8/qpoases.o -L/home/vae/qpOASES/bin -Wl,--enable-new-dtags,-R/home/vae/qpOASES/bin -lqpOASES -o build/lib.linux-x86_64-3.8/qpoases.cpython-38-x86_64-linux-gnu.so -Wl,-O1 -Wl,--as-needed running install_lib copying build/lib.linux-x86_64-3.8/qpoases.cpython-38-x86_64-linux-gnu.so -> /usr/local/lib/python3.8/dist-packages running install_egg_info Writing /usr/local/lib/python3.8/dist-packages/qpOASES_interface-0.0.0.egg-info vae@vae-ASUS-TUF-Gaming-A15-FA507UU-FA507UU:~/qpOASES/interfaces/python$ ldd /usr/local/lib/python3.8/dist-packages/qpoases.cpython-38-x86_64-linux-gnu.so linux-vdso.so.1 (0x00007f897ed8b000) libqpOASES.so.3.2 => /usr/local/lib/libqpOASES.so.3.2 (0x00007f897ec76000) libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f897ea94000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f897ea79000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f897ea56000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f897e864000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f897e715000) /lib64/ld-linux-x86-64.so.2 (0x00007f897ed8d000) vae@vae-ASUS-TUF-Gaming-A15-FA507UU-FA507UU:~/qpOASES/interfaces/python$ python3 -c "import qpoases; print('导入成功')" Traceback (most recent call last): File "<string>", line 1, in <module> ImportError: /usr/local/lib/python3.8/dist-packages/qpoases.cpython-38-x86_64-linux-gnu.so: undefined symbol: _ZN7qpOASES8QProblem4initEPKdS2_S2_S2_S2_S2_S2_RlPdS2_S2_PKNS_6BoundsEPKNS_11ConstraintsES2_
最新发布
07-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值