OpenCV、mxnet編譯與集成的各種坑

Undefined reference to _IplImage::_IplImage()

現(xiàn)象描述:某項目以O(shè)penCV 3.4.4為其第三方依賴,在link的過程中報了這個錯誤。
原因:這個方法在OpenCV 3.4.4里面已經(jīng)去掉了,根本就沒有這個方法。
發(fā)現(xiàn)方式:nm -C libopencv_core.so | grep _IplImage,發(fā)現(xiàn)并沒有這個方法,順帶一提,官方文檔3.4.4上面是有這個方法的,如果不nm一下庫還真發(fā)現(xiàn)不了
解決方法:編譯一個OpenCV 3.2.0即可解決
這樣又會遇到問題:如果打開OpenCV的cuda編譯選項,會發(fā)現(xiàn)3.2.0根本不能在cuda 10.0 + T4上面編譯,為使其正常編譯,需要用以下命令:

cmake -DWITH_IPP=OFF -DWITH_CUDA=ON -DWITH_CUBLAS=ON -DWITH_CUFFT=ON -DWITH_CUDNN=ON -DCUDA_FAST_MATH=ON -DCMAKE_BUILD_TYPE=Release -DWITH_NVCUVID=OFF -DOPENCV_EXTRA_MODULES_PATH=path/to/opencv_contrib/modules/ -DINSTALL_C_EXAMPLES=OFF -DBUILD_EXAMPLES=OFF -DCUDA_NVCC_FLAGS=--expt-relaxed-constexpr -DCUDA_ARCH_NAME=Manual -DCUDA_ARCH_BIN="50 52 60 61 75" ..

另外,以下幾篇blog可作為參考:
https://blog.csdn.net/u014613745/article/details/78310916
https://stackoverflow.com/questions/48383846/nvcc-fatal-unsupported-gpu-architecture-compute-20-while-cuda-9-1caffeopen
https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/
備注:
如果確定OpenCV是用的3.2.0或以下,還是報這個錯誤,需要查看libopencv_core.so和你自己的庫的引用順序。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容