Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在visual studio中生成示例opencv应用程序时出错_C++_Visual Studio 2010_Opencv_Visual Studio 2012_Opencl - Fatal编程技术网

C++ 在visual studio中生成示例opencv应用程序时出错

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

我正在尝试使用visual studio 2012构建此示例opencv应用程序:

为此,我下载并安装了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 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;
}