问题描述:
执行环境使用python,底层驱动的库文件已提供了两个.so文件,分别是A.so和B.so,现在使用python直接调用A.so和B.so会出现很多问题,其中有大文件指针处理不了的问题,回调函数的问题,所以退而求其次;
使用c++重写一个demo.c文件来调用A.so和B.so,编译执行文件可以可以实现功能;
但最终想法是用python来实现它,所以又将demo.c文件交叉编译成libactive.so文件供python调用实现,此处如果不加载A.so和B.so时,可以正常执行。那么加载上A.so和B.so之后,会出现报错
运行结果及报错内容
Traceback (most recent call last):
File "pydemo.py", line 13, in <module>
so = cp.cdll.LoadLibrary('./libactive.so')
File "/usr/lib/python3.7/ctypes/__init__.py", line 434, in LoadLibrary
return self._dlltype(name)
File "/usr/lib/python3.7/ctypes/__init__.py", line 356, in __init__
self._handle = _dlopen(self._name, mode)
OSError: ./libactive.so: undefined symbol:GetSdkVersion
我的解答思路和尝试过的方法
1.将demo.c编译成执行文件,可以实现A.so和B.so的对应功能
2.在网上查过没有我这种方法实现。
我想要达到的结果
编写一个python代码,调用libactive.so动态库,在libactive.so动态库中实现对应函数的执行,并能成功执行A.so和B.so的功能。