C++ 在visual studio中生成示例opencv应用程序时出错
我正在尝试使用visual studio 2012构建此示例opencv应用程序: 为此,我下载并安装了opencv 2.4.6,并将其安装在我的系统上 已配置visual studio 2012以使用它(设置包括路径、库路径和库) 我检查并将opencv\build\x86\vc11\staticlib中的所有库添加到我的应用程序中(我注意将调试库添加到调试构建中,将发布库添加到发布构建中) 我正在编译代码,我收到几个链接错误:C++ 在visual studio中生成示例opencv应用程序时出错,c++,visual-studio-2010,opencv,visual-studio-2012,opencl,C++,Visual Studio 2010,Opencv,Visual Studio 2012,Opencl,我正在尝试使用visual studio 2012构建此示例opencv应用程序: 为此,我下载并安装了opencv 2.4.6,并将其安装在我的系统上 已配置visual studio 2012以使用它(设置包括路径、库路径和库) 我检查并将opencv\build\x86\vc11\staticlib中的所有库添加到我的应用程序中(我注意将调试库添加到调试构建中,将发布库添加到发布构建中) 我正在编译代码,我收到几个链接错误: Error 1 error LNK2019: unre
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 ConsoleApplication1\opencv_ocl246d.lib(arithm.obj)
关于此代码:
if(!useCPU)
{
std::cout
<< "Device name:"
<< cv::ocl::Context::getContext()->getDeviceInfo().deviceName
<< std::endl;
}
if(!useCPU)
{
标准::cout
OpenCV有几个版本。其中一个cv::ocl::Context
没有getDeviceInfo
方法。
第二:有。我认为你应该使用github的版本
UPD:
我认为你需要构建github版本的库来解决第一个链接错误。你错过了。你还必须安装OpenCL SDK(Intel、AMD或CUDA,具体取决于你的图形卡)来解决另一个问题
英伟达:
AMD(CPU和GPU):
英特尔(CPU和GPU):谢谢。这解决了编译错误,但没有解决链接错误。我如何修复链接错误?谢谢。我会这样做。但是如果我在其中一个平台上使用,那么我的应用程序就不能在另一个平台上工作,因此我为什么要使用OpenCL?使用OpenCL的主要目的不是让我的应用程序可以在所有支持OpenCL的平台上工作吗?OpenCL designed是跨平台的:。因此,您可以安装所有SDK,然后只选择要使用的SDK版本。您应该使用此标准,因为您尝试编译的程序使用它:)这是否意味着我不能有一个在所有平台上运行的exe文件?根据仅exe-不,您不能。好吧,NVidia提供OpenCL.DLL,这是你的应用程序所需要的,带有驱动程序。我不太了解ATI和Intel驱动程序,但我需要安装SDK以启用OpenCL。因此,你应该为OpenCL.DLL提供exe,以确保安全。
if(!useCPU)
{
std::cout
<< "Device name:"
<< cv::ocl::Context::getContext()->getDeviceInfo().deviceName
<< std::endl;
}