在Visual Studio中构建示例opencv应用程序时出错
Error building sample opencv application in visual studio
我正在尝试使用Visual Studio 2012构建此示例opencv应用程序:
https://github.com/Itseez/opencv/blob/2.4/samples/ocl/surf_matcher.cpp
为此,我下载并安装了opencv 2.4.6并将其安装在我的系统上。
已将 Visual Studio 2012 配置为使用它(设置包括路径、库路径和库)
我检查并将 opencv\build\x86\vc11\staticlib 中的所有库添加到我的应用程序中(我注意将调试库添加到调试构建和发布库以发布构建)。
我正在编译代码,出现几个链接错误:
Error 1 error LNK2019: unresolved external symbol "public: __thiscall cv::ocl::SURF_OCL::SURF_OCL(double,int,int,bool,float,bool)" (??0SURF_OCL@ocl@cv@@QAE@NHH_NM0@Z) referenced in function "public: __thiscall `anonymous namespace'::SURFDetector<class cv::ocl::SURF_OCL>::SURFDetector<class cv::ocl::SURF_OCL>(double)" (??0?$SURFDetector@VSURF_OCL@ocl@cv@@@?A0x1f01e08d@@QAE@N@Z)
Error 7 error LNK2001: unresolved external symbol _clReleaseMemObject@4 ConsoleApplication1opencv_ocl246d.lib(arithm.obj)
其中有几个,它们似乎都与 ocl 库有关。
我应该添加哪个其他库才能使 OCL 正常工作?
注意:
当我尝试编译时,出现以下错误:
'getDeviceInfo' : is not a member of 'cv::ocl::Context'
在此代码上:
if(!useCPU)
{
std::cout
<< "Device name:"
<< cv::ocl::Context::getContext()->getDeviceInfo().deviceName
<< std::endl;
}
此错误似乎与周围的不同ocl.hpp有关。我使用了 github 版本(有关详细信息,请参阅答案),在更改了所需的标头后,编译错误解决了。
OpenCV有几个版本。在其中一个cv::ocl::Context
没有getDeviceInfo
方法。http://fossies.org/dox/opencv-2.4.6.1/classcv_1_1ocl_1_1Context.html
第二:https://github.com/Itseez/opencv/blob/master/modules/ocl/include/opencv2/ocl.hpp 有。我认为你应该使用github的版本。
上级:
我认为您需要构建库的 github 版本来解决第一个链接错误。你错过了 https://github.com/Itseez/opencv/blob/master/modules/nonfree/src/surf.ocl.cpp.您还必须安装OpenCL SDK(英特尔,AMD或CUDA,具体取决于您的显卡)来解决另一个问题。
内华达:https://developer.nvidia.com/opencl
AMD(CPU和GPU):http://developer.amd.com/resources/heterogeneous-computing/opencl-zone/
英特尔(CPU 和 GPU):http://software.intel.com/en-us/vcsource/tools/opencl-sdk
- 如何在 docker 中使用静态 opencv 库编译 c++ 应用程序
- 在Linux/Ubuntu中编译openCV应用程序时,如何解决未定义的引用cv:..?
- Android OpenCV 应用程序的内存问题
- WINDOWS环境下的c++opencv应用程序的低延迟视频流
- IPP如何改进OpenCV应用程序?我该如何整合它
- 在 Eclipse 中使用 JNI 构建 OpenCV 应用程序
- Opencv应用程序在运行时崩溃,错误代码为0x0000142
- 为beaglebone black交叉编译c++openCV应用程序时出现问题
- 在Visual Studio中构建示例opencv应用程序时出错
- 确定模块化OpenCV应用程序的语言/框架
- 在服务器上编译OpenCV / C++应用程序
- 如何在 OpenCV 应用程序中更改跟踪栏的位置
- 与 libstdc++-6.dll 相关的 OpenCV 应用程序崩溃
- OpenCV应用程序(而非库)链接错误
- OpenCV C++应用程序在从Eclipse启动时立即终止
- 在树莓派上编译c++ opencv应用程序出错
- 交叉编译openCV应用程序
- 交叉编译opencv应用程序,未定义引用
- c++ opencv应用程序在c#窗口
- C++程序在OpenCV应用程序中不区分大小写字母