【发布时间】:2013-02-17 14:52:58
【问题描述】:
是否可以使用 Mingw 和 Nvidia SDK 编译 OpenCL?
我知道它没有得到官方支持,但这没有任何意义。这些库不是作为静态链接库提供的吗?我的意思是一旦用任何可能的编译器编译并成功链接,应该是什么问题?
我设法编译并成功地将我的代码链接到 Nvidia 的 SDK 提供的 OpenCL 库,但是可执行文件在 clGetPlatformIDs 处引发分段错误,这是我代码中的第一个 OpenCL 调用。
这是我的编译命令
x86_64-w64-mingw32-g++ -std=c++11 File.cpp \
-L"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\lib\x64" \
-I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include" \
-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 进行编译并使用其他东西进行链接?我不确定其他可能是什么。
【问题讨论】:
-
为什么不使用 VC++ Express 来构建主机代码?您还使用 32 位还是 64 位库? CUDA\v5.0\lib\x64 和 -luse32 -lcomdlg32 -ladvai32 ... -m64 混合在一起令人困惑...... -m64 所有这些库都是必需的吗?简化你的命令行。
-
64 位,我的 C++ 代码使用 C++11 特性,所以 VC++ 不行。我尝试删除和添加库,死路一条。
标签: windows mingw opencl gpu nvidia