CUDA OpenCV 未定义对“nppiConvert_16u8u_C4R”的引用

cuda opencv undefined reference to `nppiConvert_16u8u_C4R`

本文关键字:16u8u C4R 引用 nppiConvert OpenCV 未定义 CUDA      更新时间:2023-10-16

我正在尝试运行一个基于 opencv 的简单 rgb 到灰度脚本并通过 cuda 运行它。执行计算的 C++ 脚本的标头链接了来自opencv的以下 api:

#include <opencv2/core/core.hpp>                                                
#include <opencv2/highgui/highgui.hpp>                                          
#include <opencv2/imgproc/imgproc.hpp> 

我正在尝试使用以下makefile逻辑编译它:

OPENCV_LIBPATH=-L/apps/gcc/4.7.2/opencv/2.4.8/lib 
OPENCV_LIBPATH += -l/opt/cuda/5.5/lib64
OPENCV_INCLUDEPATH=/apps/gcc/4.7.2/opencv/2.4.8/include                         
OPENCV_LIBS=-lopencv_core -lopencv_imgproc -lopencv_highgui -lnppi -lz                   
CUDA_INCLUDEPATH=/opt/cuda/5.5/include                                          
NVCC_OPTS=-O3 -arch=sm_20 -Xcompiler -Wall -Xcompiler -Wextra -m64              
GCC_OPTS=-O3 -Wall -Wextra -m64                                                 
main: rgbtogrey.o rgb_to_grey.o Makefile                                     
    $(NVCC) -o main.out rgbtogrey.o rgb_to_grey.o -I$(OPENCV_INCLUDEPATH) $(OPENCV_LIBPATH) $(OPENCV_LIBS)
rgbtogrey.o: rgbtogrey.cpp timer.h utils.h                                      
    g++ -c rgbtogrey.cpp $(GCC_OPTS) -I $(CUDA_INCLUDEPATH) -I $(OPENCV_INCLUDEPATH)
rgb_to_grey.o: rgb_to_grey.cu utils.h                                           
    nvcc -c rgb_to_grey.cu $(NVCC_OPTS)                                         
clean:                                                                          
    rm -f *.o hw   

我尝试了许多其他解决方案,例如编译一个基本的opencv cuda和链接Cuda C++问题。

当前错误:

/apps/gcc/4.7.2/opencv/2.4.8/lib/libopencv_highgui.a(grfmt_exr.cpp.o): In function `cv::ExrDecoder::ExrDecoder()':
grfmt_exr.cpp:(.text._ZN2cv10ExrDecoderC2Ev+0x9d): undefined reference to `Imf::Chromaticities::Chromaticities(Imath::Vec2<float> const&, Imath::Vec2<float> const&, Imath::Vec2<float> const&, Imath::Vec2<float> const&)'

我对此很陌生,因此不确定在哪里寻找来解决此错误。

编辑:1. 在评论之后,我在添加 LIB 路径后将 lnppi 选项添加到主选项(请参阅更新的制作文件部分)

现在错误:

/apps/gcc/4.7.2/opencv/2.4.8/lib/libopencv_core.a(persistence.cpp.o): In function `icvGets(CvFileStorage
persistence.cpp:(.text._ZL7icvGetsP13CvFileStoragePci+0x127): undefined reference to `gzgets'
  1. 添加了通过lz指向 ZLIB 的链接

尝试使用 OpenCV OPENCV_PATH/3rdparty/lib 文件夹下的附加库 -libIlmImf -llibjpeg -llibjasper -llibpng -lzlib 。还要注意库的链接顺序,因为任何静态库都必须以适当的顺序链接,否则未解析的引用将与 GNU ld 一起出现:

如果任何 [静态] 库 A 依赖于库 B 中定义的符号, 则库 A 应首先出现在提供给链接器的列表中。

有关详细信息,请参阅链接器顺序 - GCC。

相关文章:
  • 没有找到相关文章