【问题标题】:How to compile opencv 245 with visual studio 2010 and openCL support?如何使用 Visual Studio 2010 和 openCL 支持编译 opencv 245?
【发布时间】:2013-05-26 12:01:40
【问题描述】:

我在编译支持 GPU 的 OpenCV 245 时遇到了很多麻烦。经过一番努力,我设法让 cuda 支持启动并运行,但现在我被困在 opencl 上,这是问题所在:

在编译期间的某个时间点,会生成文件 kernels.cpp,其中包含所有内核函数作为字符串。据我了解,它们是使用 cl2cpp.cmake 脚本从 .cl 文件自动转换的。

我不明白的是,构建中排除了一个文件:在 Visual Studio 项目或kernels.cpp 是自动生成的。这会导致链接时出现未定义的错误。

我尝试手动将 nonfree_surf.cl 添加到 Visual Studio 项目中。这不会改变任何事情。在 ocl 模块的 CMakeLists.txt 中,所有 cl 文件似乎都自动添加了以下行:

file(GLOB CL_FILES "${CMAKE_CURRENT_SOURCE_DIR}/src/kernels/*.cl") 

我已尝试手动将 nonfree_surf 添加到 CL_FILES,但没有效果。

我对 CMake 知之甚少,因此我不太了解发生了什么。有人可以告诉我如何找到这种行为的原因,即:

为什么所有 .cl 文件都添加到我的 VS 项目中,除了 nonfree_surf.cl ?

我该如何纠正这个问题?

也许我可以手动执行 cl2cpp.cmake 脚本?如果有,怎么做?

【问题讨论】:

    标签: visual-studio-2010 opencv cmake opencl


    【解决方案1】:

    通过手动运行脚本来管理它:

    cmake -DOUTPUT_PATH=c:/opencv/kernels2.cpp -DCL_DIR:PATH=c:/opencv/modules/ocl/src/kernels  -P "c:\opencv\modules\ocl\cl2cpp.cmake"
    

    由于某种原因(可能与使 nonfree_surf 不被处理的原因相同),并非每个必要的函数都以这种方式处理,所以我只是将 nonfree_surf 字符串复制粘贴到 kernels.cpp 中,然后继续构建。

    如果有人需要二进制文件,因为编译起来很麻烦,这里是:

    Opencv 2.4.5 binaries compiled with VS2010 x86 (WIN32) including ocl and gpu library.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-12
      • 1970-01-01
      • 2017-04-13
      • 2013-12-09
      • 2012-01-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多