我正在开发一个Python扩展,允许在Raspberry Pi上运行的脚本控制sensor。传感器制造商为我的组织提供了C API的源代码,我正在尝试创建一组绑定,以使传感器可以在Python脚本中访问。你知道吗
API源附带的makefile创建了一组对象文件,然后我使用以下命令将这些文件链接到一个库(libvl53l1.a):
银币-cvq libvl53l1.a*.o
然后我将这个库添加到设置.py通过添加此标志编写我的扩展脚本:
额外的编译参数=[“-l:libvl53l1.a”]
代码、库和设置.py为方便起见,脚本当前位于同一目录中。使用命令(python3)将库安装到Python中设置.pybuild(ext--inplace)运行时没有错误,但是,当我尝试在Python解释器中导入库时,导入失败,因为扩展名的.so文件中有一个未定义的符号“VL53L1\u WaitDeviceBooted”。列出libvl54l1.a中的符号:
nm libvl53l1.a | grep“VL53L1|u WaitDeviceBooted”
显示库确实公开了此名称的符号。因此,我认为链接器无法将扩展链接到此静态库。是不是我错过了一个步骤导致了这一切?我还尝试删除Python文档中建议的.a扩展,但没有成功。你知道吗
谢谢
此设置将
-l:...
添加到编译命令,但编译器忽略该选项,因为它是一个链接选项,编译器不执行任何链接。你知道吗您需要:
extra_link_args=["-lvl53l1"]
,它将-lvl53l1
添加到link命令中(链接器在执行链接时不会忽略该选项)。你知道吗相关问题 更多 >
编程相关推荐