1.一个用到opencv的c++工程,当编译成功后,成功生成了so库,但在python环境下调用so库时报错:
Traceback (most recent call last):
File "/home/dq/PycharmProjects/ICRA 2021 path planning/simulator_planning_astar/demo.py", line 1, in <module>
from icra_simulator import *
File "/home/dq/PycharmProjects/ICRA 2021 path planning/simulator_planning_astar/icra_simulator.py", line 10, in <module>
kernel = ll("./cmake-build-debug/libicra_planning.so")
File "/home/dq/anaconda2/envs/dq/lib/python3.6/ctypes/__init__.py", line 426, in LoadLibrary
return self._dlltype(name)
File "/home/dq/anaconda2/envs/dq/lib/python3.6/ctypes/__init__.py", line 348, in __init__
self._handle = _dlopen(self._name, mode)
OSError: ./cmake-build-debug/libicra_planning.so: undefined symbol: _ZN2cv8fillPolyERNS_3MatEPPKNS_6Point_IiEEPKiiRKNS_7Scalar_IdEEiiS3_
Process finished with exit code 1
解决方法:
在cmakelist.txt中添加
find_package(OpenCV 3 REQUIRED)
include_directories(
include
${OpenCV_INCLUDE_DIRECTORIES}
)
target_link_libraries(${PROJECT_NAME}
${OpenCV_LIBRARIES}
)
其中${}中的部分不用更改