python调用C++ SDK的记录

本文记录了使用Python调用红外摄像头C++ SDK的过程,通过pybind11封装C++动态链接库libSDK.so。在调用过程中,遇到函数未定义的问题,原因是缺少对lib_A.so和lib_B.so的链接。解决方法是在封装时确保链接所有依赖库,从而成功调用SDK函数。
摘要由CSDN通过智能技术生成

最近调一个红外摄像头,后续做红外视频检测和识别。厂家给的SDK是C++写的,也不好做二次开发,只好用python再做一次封装。

更新一个工具,pybind11,方便调用C++动态链接库

举个例子,python要调用SDK.cpp里面的函数,需要把SDK.cpp封装成libSDK.so的动态依赖库来调用。

g++ SDK.cpp -fPIC -shared -o libSDK.so

封装好后,python的脚本里调用

import ctypes
from ctypes import *

if __name__ == '__main__':
    ll = ctypes.cdll.LoadLibrary   
    libmain = ll("./libSDK.so")#引用libSDK.so
    ret = libSDK.setup()#这里就可以调用SDK.cpp里的方法啦

如果运行python脚本的时候报错,某一个函数未定义,甚至在SDK.cpp里又没有找到这个函数。说明函数Function,依赖其他的动态依赖库,在封装的时候,要链接依赖的so文件。

OSError: ./libSDK.so: undefined symbol: Function

举个例子,SDK.cpp依赖lib_A.so和lib_B.so动态依赖库,所以要链接这两个so文件,才能调用SDK.so


                
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值