【发布时间】:2011-11-15 12:55:41
【问题描述】:
我正在尝试使 OpenCLRaw 绑定达到可以在 Windows 上使用它们的程度。我已经在 github 上分叉了 OpenCLRaw 存储库,因此我可以根据需要进行修改。我的分支在这里: https://github.com/dagit/OpenCLRaw
我大部分时间都在我的“FunPtr”分支工作。
我遇到的问题是:我安装了 AMD 的 OpenCL SDK,将他们的 Visual Studio 特定 .lib 文件转换为 gcc 可以处理的文件(.a 文件),但 ghc 似乎无法与之链接。我在 OpenCL API 中使用的所有东西都得到了未定义的符号。
我能够构建一个“简单的”C 程序并使用我生成的 .a 文件和来自 mingw 的 gcc(不是来自 Haskell 安装)链接它。我正在使用 Haskell 平台的最新 Windows 版本。
这些是我用于生成 .a 文件的步骤: http://forums.amd.com/forum/messageview.cfm?catid=390&threadid=138890
我使用了示例脚本中的命令(例如,gendef 和 dlltool)。我尝试尽可能多地使用 32 位,因为我知道 GHC 会希望一切都是 32 位,所以我不认为这是 32 位与 64 位的问题。
有谁知道在 ghc 下调用 gcc 而不是我从 mingw 获得的 gcc 是否有什么不同?
我也玩过 ghc 命令行(我使用 cabal-dev --verbose=3 来检查命令行),但我仍然无法将其按摩到工作状态。
任何帮助将不胜感激!
【问题讨论】:
-
如果我使用 pexports 而不是 gendef 那么它会删除函数名称后的所有 @s。这允许 GHC 使用库文件进行链接,但现在 a)gcc 无法与该文件链接,b)我的小程序在调用 clGetPlatfromIDs 时出现段错误。
-
我没有在 Windows 上测试它,但是我注意到 OpenCLRaw 有几个类型的错误,我为自己疯狂的 opencl 绑定,github.com/zhensydow/opencl
-
@Zhen,你有计划将你的绑定放在 Hackage 上吗?我寻找haskell 东西的第一个地方是hackage,然后是google 搜索。您的图书馆看起来像是对 Jeff 的改进。可惜它没有出现在 hackage 和 google 上。
-
我打算加入hackage,但我想多测试一下
-
我刚刚将它添加到hackage,hackage.haskell.org/package/OpenCL,它不够稳定,但也许我可以得到反馈来增强它。
标签: windows haskell linker opencl