OpenCL C/C++ 动态绑定库(win32 等)

Posted

技术标签:

【中文标题】OpenCL C/C++ 动态绑定库(win32 等)【英文标题】:OpenCL C/C++ dynamic binding library (win32 and more) 【发布时间】:2011-02-17 15:21:06 【问题描述】:

我正在尝试使用 OpenCL,为了将其投入生产,我希望能够动态绑定到 OpenCL.DLL(在 Windows 下),以便“优雅地”处理以下情况主机上没有安装 OpenCL。

是否有任何可用的库(或代码 sn-p)来处理 C 或 C++ 中的这种动态绑定,就像 GLEW 为 OpenGL 所做的那样?我想避免麻烦自己做。

谢谢,

【问题讨论】:

【参考方案1】:

给你:

http://clcc.sourceforge.net/clew_8h.html

【讨论】:

感谢您的链接,我试了一下,它看起来大部分都很好。不过,我被一个无声的错误所困扰:由于我的项目是使用 Unicode 字符集构建的,所以当调用 LoadLibraryW 函数时,clewInit 的模块名称的 const char* 被无声地转换为 LPCWSTR。然后 LoadLibrary 调用失败,似乎没有什么好的理由。花了一些时间才弄清楚。【参考方案2】:

由于您正在处理 Win32,因此最简单的解决方案是延迟加载。如果你延迟加载 OpenCL,并且编译器添加的存根找不到它,它将调用__pfnDliFailureHook2(dliFailLoadLib)。您可以在那里处理错误;如果您不提供处理程序,您将获得默认行为(程序中止)。在任何一种情况下,程序都不会对 OpenCL 产生静态依赖。

【讨论】:

感谢您的建议。动态绑定更灵活,只允许绑定可用的入口点(如果支持多个版本添加/删除功能,请参阅 OpenGL);延迟加载 OpenCL 是否允许处理这种情况? 是的,您的__pfnDliFailureHook2 也可以处理个别功能不可用的情况,这就是dliFailGetProc 的作用。【参考方案3】:

QtOpenCL http://labs.qt.nokia.com/2010/04/07/using-opencl-with-qt/

【讨论】:

以上是关于OpenCL C/C++ 动态绑定库(win32 等)的主要内容,如果未能解决你的问题,请参考以下文章

Clion C/C++动态库生成与调用简单Demo win11&ubuntu

Clion C/C++动态库生成与调用简单Demo win11&ubuntu

Clion C/C++动态库生成与调用简单Demo win11&ubuntu

Python3调用C/C++动态库(使用SWIG)

Python3调用C/C++动态库(使用SWIG)

如何为Android,Mac和Windows平台创建Java JNI动态链接库