加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

Windows – 在Mingw Nvidia SDK上编译OpenCL

发布时间:2021-03-01 09:36:21 所属栏目:Windows 来源:网络整理
导读:是否可以使用Mingw和Nvidia SDK编译OpenCL? 我知道它没有正式的支持,但这根本没有意义.图书馆不是作为静态链接库提供的?我的意思是一旦编译了任何编译器可能是,并成功链接,应该是什么问题? 我设法编译并成功将我的代码链接到Nvidia SDK提供的OpenCL库,

是否可以使用Mingw和Nvidia SDK编译OpenCL?

我知道它没有正式的支持,但这根本没有意义.图书馆不是作为静态链接库提供的?我的意思是一旦编译了任何编译器可能是,并成功链接,应该是什么问题?

我设法编译并成功将我的代码链接到Nvidia SDK提供的OpenCL库,但是可执行文件会在clGetPlatformIDs中抛出Segmentation Fault,这是我的代码中的第一个OpenCL调用.

这是我的编译命令

x86_64-w64-mingw32-g++ -std=c++11 File.cpp 
-L"C:Program FilesNVIDIA GPU Computing ToolkitCUDAv5.0libx64" 
-I"C:Program FilesNVIDIA GPU Computing ToolkitCUDAv5.0include" 
-gcoff -lOpenCL -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 
-lshell32 -lole32 -loleaut32 
-luuid -lodbc32 -lodbccp32 -luser32 -lgdi32 -lmingwex -m64 
-DWIN32 -D_DEBUG -D_CONSOLE

请注意,这些库是从示例OpenCL代码的.sln文件中获取的.

我尝试了这些图书馆的各种组合,似乎没有任何工作.

还有一种使用Mingw编译的方法,并使用别的链接进行链接?我不知道还有什么可能的.

我们已经能够使用MinGW reimp和dlltool实用程序来为“OpenCL.dll”DLL创建一个导入库“libOpenCL.a”.以下是我们遵循的步骤:

>步骤1:确保你安装了mingw-utils(用于reimp和dlltool).如果没有,请在MinGW提示符下键入:

mingw-get install mingw-utils
>步骤2:接下来,键入以下命令:

reimp OpenCL.lib

这应该产生一个OpenCL.def和libOpenCL.a文件.如果结果符合“无效或损坏的导入库”的要求,替代步骤2应该起作用.

>替代步骤2:将dlltool与.def文件一起使用,您可以在这里找到:http://pastebin.com/f2ac38b2f.命令变成:

dlltool -l libOpenCL.a -d OpenCL.def -A -k

您现在可以链接到新创建的libOpenCL.a.如果仍然看到缺少的符号,请将它们添加到.def文件中并重复执行dlltool命令.

我们能够得到这一切工作,感谢以下帖子中的信息,供参考:

> http://oscarbg.blogspot.com/2009/12/opencl-with-mingw.html
> http://www.mingw.org/wiki/CreateImportLibraries(我只能粘贴2个链接)

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读