链接错误OpenCV 2.4+CUDA windows 7(x64)命令行



我正在尝试编译一个同时使用CUDA和OpenCV的程序。我确信OpenCV的路径是正确的,因为用这个编译一个简单的OpenCV程序:

cl /I"%OPENCV_DIR%include" /LINK"%OPENCV_DIR%x64vc10libopencv_core240.lib" "%OPENCV_DIR%x64vc10libopencv_highgui240.lib" testCV.cpp

则成功编译程序。现在,当我尝试像这样编译NVCC时:

nvcc testCuda.cu --cl-version 2010 --use-local-env -I"%OPENCV_DIR%include" -L"%OPENCV_DIR%x64vc10libopencv_core240.lib" "%OPENCV_DIR%x64vc10libopencv_highgui240.lib"

我得到一个错误,当尝试链接说:

error LNK2019: unresolved external symbol cvLoadImage referenced in function main a.exe : fatal error LNK1120: 1 unresolved externals

在编译NVCC时,我错过了什么或做错了什么?

-L用于指定库目录不是文件

你可能想要执行:

nvcc testCuda.cu --cl-version 2010 --use-local-env -I"%OPENCV_DIR%include" -L"%OPENCV_DIR%x64vc10lib" -lopencv_core240 -lopencv_highgui240

如果这不起作用,删除-l并添加它们的扩展名:

nvcc testCuda.cu --cl-version 2010 --use-local-env -I"%OPENCV_DIR%include" -L"%OPENCV_DIR%x64vc10lib" opencv_core240.lib opencv_highgui240.lib

很久以前,当我们有CUDA 2时。我写了一个Makefile来编译一个使用这两个框架的应用程序:

CXX=g++
CUDA_INSTALL_PATH=/usr/local/cuda
CFLAGS= -I. -I$(CUDA_INSTALL_PATH)/include -I/usr/include/opencv 
LDFLAGS= -L$(CUDA_INSTALL_PATH)/lib -lcudart -L/usr/lib -lcxcore -lcv -lhighgui -lcvaux -lml 
ifdef EMU
CUDAFLAGS+=-deviceemu
endif
all:
    $(CXX) $(CFLAGS) -c main.cpp -o main.o -m32 -arch i386
    nvcc $(CUDAFLAGS) -c kernel_gpu.cu -o kernel_gpu.o
    $(CXX) $(LDFLAGS) main.o kernel_gpu.o -o grayscale -arch i386
clean:
    rm -f *.o grayscale

可能是一个缺失的-L之前第二个库文件像第一个?

我只是能够通过在我的代码中添加一个pragma指令来链接Windows上的cuBLAS:

#pragma comment(lib,"cublas.lib")

这可能也适用于OpenCV。但是要注意,这是不可移植的。

相关内容

  • 没有找到相关文章

最新更新