/usr/bin/ld: /lib/x86_64-linux-gnu/libgobject-2.0.so.0: undefined reference to `ffi_type_uint32@LIBF
ubuntu20.04下,在c++中调用python代码时,编译遇到以下错误:
/usr/bin/ld: /lib/x86_64-linux-gnu/libgobject-2.0.so.0: undefined reference to
ffi_type_uint32@LIBFFI_BASE_7.0' /usr/bin/ld: /lib/x86_64-linux-gnu/libgobject-2.0.so.0: undefined reference toffi_type_sint32@LIBFFI_BASE_7.0’
/usr/bin/ld: /lib/x86_64-linux-gnu/libgobject-2.0.so.0: undefined reference toffi_type_float@LIBFFI_BASE_7.0' /usr/bin/ld: /lib/x86_64-linux-gnu/libgobject-2.0.so.0: undefined reference toffi_type_pointer@LIBFFI_BASE_7.0’
/usr/bin/ld: /lib/x86_64-linux-gnu/libgobject-2.0.so.0: undefined reference toffi_type_uint64@LIBFFI_BASE_7.0' /usr/bin/ld: /lib/x86_64-linux-gnu/libgobject-2.0.so.0: undefined reference toffi_type_void@LIBFFI_BASE_7.0’
/usr/bin/ld: /lib/x86_64-linux-gnu/libgobject-2.0.so.0: undefined reference toffi_type_double@LIBFFI_BASE_7.0' /usr/bin/ld: /lib/x86_64-linux-gnu/libgobject-2.0.so.0: undefined reference toffi_type_sint64@LIBFFI_BASE_7.0’
/usr/bin/ld: /lib/x86_64-linux-gnu/libgobject-2.0.so.0: undefined reference toffi_prep_cif@LIBFFI_BASE_7.0' /usr/bin/ld: /lib/x86_64-linux-gnu/libgobject-2.0.so.0: undefined reference toffi_call@LIBFFI_BASE_7.0’
根据这篇文章Conda虚拟环境下libp11-kit.so.0: undefined symbol: ffi_type_pointer…问题解决的操作,解决了编译问题。步骤如下:
- 找到所使用的python环境,进到它的lib下,比如我的是
~/miniconda3/envs/py38/lib cd ~/miniconda3/envs/py38/lib- 查看:
ll | grep libffi

- 备份:
mv libffi.so.7 libffi.so.7-bak - 重新链接:
ln -s /lib/x86_64-linux-gnu/libffi.so.7.1.0 libffi.so.7 - 结果

但我还遇到另一个大坑:运行时仍然报错!折腾了我好久,原来是c++的opnecv版本跟python的opencv-python不一致导致的,解决就是尽量让opencv版本和opencv-python版本保持一致。
/usr/local/bin/opencv_version
3.4.15
python3 -c "import cv2; print(cv2.__version__)"
3.4.15
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)