неопределенный символ: _ZN2cv7imwriteERKNS_6StringERKNS_11_InputArrayERKSt6vectorIiSaIiEE - PullRequest
1 голос
/ 06 августа 2020

В Ubuntu 18.04 я создал общую библиотеку, используя следующую compile.sh, взятую из репозитория других людей. Я модифицировал только PATH и LD_LIBRARY_PATH. Стоит ли модифицировать OPENCV_INCLUDE_DIR и OPENCV_LIBRARY_DIR, потому что я смог его скомпилировать и получить libRender.so? Я НЕ смог найти эти OPENCV_INCLUDE_DIR и OPENCV_LIBRARY_DIR на своем рабочем столе.

export PATH=$PATH:/usr/local/cuda-10.1/bin
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64

export OPENCV_INCLUDE_DIR=/orions4-zfs/projects/jingweih/opencv/include
export OPENCV_LIBRARY_DIR=/orions4-zfs/projects/jingweih/opencv/lib

export CFLAGS="-I/data/Taskonomy/opencv/include -I$OPENCV_INCLUDE_DIR"
export DFLAGS="-L/data/Taskonomy/opencv/lib -L$OPENCV_LIBRARY_DIR -lopencv_core -lopencv_highgui"

g++ -std=c++11 -c main.cpp $CFLAGS -O2 -o main.o -fPIC
g++ -std=c++11 main.o $CFLAGS $DFLAGS -O2 -o libRender.so -shared -fPIC

#g++ -std=c++11 main.o buffer.o loader.o render.o $CFLAGS $DFLAGS -o render -lcudart

#rm *.o

Но после компиляции, когда я попытался использовать библиотеку,

Render = cdll.LoadLibrary('./Render/libRender.so')

это вызвало ошибку

Traceback (most recent call last):
  File "visualize_field.py", line 4, in <module>
    import Render.render as render
  File "/home/qimin/Projects/Cameralocalization/src/Render/render.py", line 4, in <module>
    Render = cdll.LoadLibrary('./Render/libRender.so')
  File "/home/qimin/anaconda3/envs/framenet/lib/python3.7/ctypes/__init__.py", line 442, in LoadLibrary
    return self._dlltype(name)
  File "/home/qimin/anaconda3/envs/framenet/lib/python3.7/ctypes/__init__.py", line 364, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: ./Render/libRender.so: undefined symbol: _ZN2cv7imwriteERKNS_6StringERKNS_11_InputArrayERKSt6vectorIiSaIiEE

Вот результат ldd libRender.so

linux-vdso.so.1 (0x00007ffce61af000)
libopencv_core.so.3.4 => /usr/local/lib/libopencv_core.so.3.4 (0x00007fb4da01d000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fb4d9c94000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fb4d9a7c000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb4d968b000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fb4d9487000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fb4d9268000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fb4d9060000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fb4d8e43000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fb4d8aa5000)
/lib64/ld-linux-x86-64.so.2 (0x00007fb4db10d000)

Мы будем очень признательны за любые предложения по решению этой проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...