OpenCL & VC++ from ATI to nVidia


I made an openCL application on a platform with an ATI GPU.

Now I try to port the exact same application to a platform with nVidia card. I installed the SDK and copied my source code onto the new pc. changed the paths to the headers and the OpenCL.lib. Now i get 30 of the following errors

error LNK2019: unresolved external symbol __imp__clCreateBuffer referenced in function “public: __thiscall cl::Buffer::Buffer(class cl::Context const &,unsigned __int64,unsigned int,void *,int *)” (??0Buffer@cl@@QAE@ABVContext@1@_KIPAXPAH@Z)

My software is programmed without the ATI SDK.

Anyone can help?



Have you tried launching the app without recompiling?

Did you move from a 64 bit system to a 32 bit system?

Double check what you’'re feeding the linker, seems like it doesn’t see OpenCL.lib.

Thx for the quick reply

I moved from a 32b to a 64b system.

It actually does see the OpenCL.lib. When I enter a wrong pad (on purpose) he gives me the error: Can’t find OpenCL.lib. because i get other errors now he finds the lib.

I use the Cpp bindings. May be it has to do something with that?

Found this on the net:

Which is odd because neither Khronos OpenCL headers nor the Cpp bindings declare calls with __declspec(dllimport). The standard way of calling stuff from native OpenCL is __stdcall and Cpp bindings don’t seem to change anything. When I remove OpenCL.lib from my project’s linker imports I get

error LNK2019: unresolved external symbol _clReleaseCommandQueue@4 referenced in function

Note no imp.

Which version of the NVIDIA SDK and which drivers are you using? I remember the calling conventions have changed with 195.xx drivers and SDK 3.0 - the ones from 190.xx and 2.3 were not up to spec.

I’ve downloaded the drivers and de SDK from this page

for clarification

this is what my vc++ dumps in output

Ah, so you’re using the old drivers and SDK.

Download the ones from

You’ll find OpenCL.lib in CUDA Toolkit and GPU Computing SDK (you can download either one). Link against the new OpenCL.lib while using 197 drivers.

I copied an example from nVidea, used their settings and voila, the errors were gone.Strange strange…