vs2010 cuda opencv

来源:互联网 发布:闲鱼淘宝介入 在哪里 编辑:程序博客网 时间:2024/05/29 23:45

作为一名初学者,在垦荒的途中会遇到各种问题。今天在用vs2010配置cuda与opencv联合开发环境中本人就遇到了这样的问题。

(1)、vs2010+opencv配置参考 http://www.opencv.org.cn/index.php/VC_2010_Express%E4%B8%8B%E5%AE%89%E8%A3%85OpenCV2.4.3

(2)、vs2010+cuda配置参考 http://blog.csdn.net/diyoosjtu/article/details/8454253

第一步:由于本人cuda新入手,对照(2)中配置好cuda,贴入例程,运行ok。下一步出现问题:

第二步:配置opencv,在第一步的例程中调用opencv函数,出现问题。输出信息如下:

1>  d:\my documents\visual studio 2010\Projects\test_cuda04\test_cuda04>"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\bin\nvcc.exe" -gencode=arch=compute_11,code=\"sm_11,compute_11\" --use-local-env --cl-version 2010 -ccbin "C:\Program Files\Microsoft Visual Studio 10.0\VC\bin"  -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include"  -G   --keep-dir Debug -maxrregcount=0  --machine 32 --compile  -g   -DWIN32 -D_DEBUG -D_CONSOLE -D_UNICODE -DUNICODE -Xcompiler "/EHsc /W3 /nologo /Od /Zi /RTC1 /MDd  " -o Debug\test_cuda04.cu.obj "d:\my documents\visual studio 2010\Projects\test_cuda04\test_cuda04\test_cuda04.cu" 1>D:\Program Files\OpenCV2.3\opencv\build\include\opencv2/core/types_c.h(301): warning : variable "t" is used before its value is set1>  1>c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\math_functions.h : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失......1>D:\Program Files\OpenCV2.3\opencv\build\include\opencv2/core/types_c.h(301): warning : variable "t" is used before its value is set1>  1>d:\program files\opencv2.3\opencv\build\include\opencv2\flann\lsh_table.h(210): warning : statement is unreachable1>  1>d:\program files\opencv2.3\opencv\build\include\opencv2\flann\lsh_table.h(215): warning : statement is unreachable1>  1>d:\program files\opencv2.3\opencv\build\include\opencv2\flann\lsh_table.h(224): warning : statement is unreachable1>  1>d:\program files\opencv2.3\opencv\build\include\opencv2\flann\lsh_table.h(236): warning : statement is unreachable1>  1>d:\program files\opencv2.3\opencv\build\include\opencv2\flann\lsh_index.h(89): error : no instance of constructor "cvflann::LshIndexParams::LshIndexParams" matches the argument list1>  1>d:\program files\opencv2.3\opencv\build\include\opencv2\flann\index_testing.h(170): warning : variable "p1" was set but never used1>  1>d:\program files\opencv2.3\opencv\build\include\opencv2\flann\index_testing.h(251): warning : variable "p1" was set but never used1>  1>D:\Program Files\OpenCV2.3\opencv\build\include\opencv2/flann/flann.hpp(253): warning : missing return statement at end of non-void function "cv::flann::Index_<T>::veclen"1>  1>D:\Program Files\OpenCV2.3\opencv\build\include\opencv2/flann/flann.hpp(259): warning : missing return statement at end of non-void function "cv::flann::Index_<T>::size"1>  1>D:\Program Files\OpenCV2.3\opencv\build\include\opencv2/flann/flann.hpp(266): warning : missing return statement at end of non-void function "cv::flann::Index_<T>::getParameters"1>  1>D:\Program Files\OpenCV2.3\opencv\build\include\opencv2/flann/flann.hpp(272): warning : missing return statement at end of non-void function "cv::flann::Index_<T>::getIndexParameters"1>  1>D:\Program Files\OpenCV2.3\opencv\build\include\opencv2/flann/flann.hpp(354): warning : missing return statement at end of non-void function "cv::flann::Index_<T>::radiusSearch(const std::vector<cvflann::L2<T>::ElementType, std::allocator<cvflann::L2<T>::ElementType>> &, std::vector<int, std::allocator<int>> &, std::vector<cvflann::L2<T>::ResultType, std::allocator<cvflann::L2<T>::ResultType>> &, cv::flann::Index_<T>::DistanceType, const cvflann::SearchParams &)"1>  1>D:\Program Files\OpenCV2.3\opencv\build\include\opencv2/flann/flann.hpp(373): warning : missing return statement at end of non-void function "cv::flann::Index_<T>::radiusSearch(const cv::Mat &, cv::Mat &, cv::Mat &, cv::flann::Index_<T>::DistanceType, const cvflann::SearchParams &)"1>  1>D:\Program Files\OpenCV2.3\opencv\build\include\opencv2/flann/flann.hpp(413): warning : missing return statement at end of non-void function "cv::flann::hierarchicalClustering<ELEM_TYPE,DIST_TYPE>(const cv::Mat &, cv::Mat &, const cvflann::IndexParams &)"1>  1>  1 error detected in the compilation of "C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/tmpxft_00000894_00000000-3_test_cuda04.cpp4.ii".
......1>C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations\CUDA 5.5.targets(592,9): error MSB3721: 命令“"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\bin\nvcc.exe" -gencode=arch=compute_11,code=\"sm_11,compute_11\" --use-local-env --cl-version 2010 -ccbin "C:\Program Files\Microsoft Visual Studio 10.0\VC\bin"  -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include"  -G   --keep-dir Debug -maxrregcount=0  --machine 32 --compile  -g   -DWIN32 -D_DEBUG -D_CONSOLE -D_UNICODE -DUNICODE -Xcompiler "/EHsc /W3 /nologo /Od /Zi /RTC1 /MDd  " -o Debug\test_cuda04.cu.obj "d:\my documents\visual studio 2010\Projects\test_cuda04\test_cuda04\test_cuda04.cu"”已退出,返回代码为 2。

这里面有三个错误,一开始眼瘸,只看到最后的错误。于是上网查MSB3721,发现好像和本情况都不符。没办法,将opencv的函数去除,运行,还是出现和上述一样的问题。再讲opencv头文件也去除,问题消失。仔细查找,发现这条错误:

1>d:\program files\opencv2.3\opencv\build\include\opencv2\flann\lsh_index.h(89): error : no instance of constructor "cvflann::LshIndexParams::LshIndexParams" matches the argument list
由于本人功底有限,也不敢随意更改构造函数啊。怎么办,由于本人用的opencv还是一年多前下的2.3.1版本。那就下最新版opencv吧。于是下了个opencv2.4.6. 然后,问题简单解决。


原创粉丝点击