Is it possible to compile OpenCL using Mingw and Nvidia SDK?
I\'m aware that its not officially supported but that just doesn\'t make sense. Aren\'t the libraries pr
OpenCL libraries are just stubs to the OpenCL.dll. I recomend therefore using a dynamic loading technique. It will simply solve all your problems. Or do you really need some of the nVIDIA tweaks of OpenCL?
It is not only safer at runtime, but also easyer to compile since you need no linker nor defines, nor anything. Just a simple cpp/hpp files added to your proyect.
A very good one to use is CLEW. However I don't agree completely with that library, because C++ wrappers are broken. So maybe you will need some tweaking. Also I typically disable the "atexit" code, since it can be problematic.
We have been able to do this by using the MinGW reimp and dlltool utilities to create an import library "libOpenCL.a" for the "OpenCL.dll" DLL. Here are the steps we followed:
step 1: Make sure you have mingw-utils installed (for reimp and dlltool). If you don't, at a MinGW prompt, type:
mingw-get install mingw-utils
step 2: Next, type the following command:
reimp OpenCL.lib
This should yield an OpenCL.def and libOpenCL.a file. If the result is something along the lines of "invalid or corrupt import library", the alternative step 2 should work.
alternative step 2: Use dlltool together with a .def file that you can find here: http://pastebin.com/f2ac38b2f . The command becomes:
dlltool -l libOpenCL.a -d OpenCL.def -A -k
You can now link against the newly created libOpenCL.a. If you still see missing symbols, add them to the .def file and repeat the dlltool command.
We were able to get this all working thanks to the information found in following posts, for reference: