编译器希望从OpenCL.lib中获取受损的名称

时间:2014-07-18 18:24:47

标签: c++ c opencl name-mangling

我尝试编译Intel OpenCL代码。程序很简单:

#include <CL/cl.h>

int main(int argc, char** argv)
{
    cl_int error = CL_SUCCESS;

   // Get platform number.
    cl_uint platformNumber = 0;

    error = clGetPlatformIDs(0, NULL, &platformNumber);
    return 0;
}

但未找到_clGetPlatformIDs@12。我添加OpenCL.lib和路径。在OpenCL.lib中是clGetPlatformIDs,而不是_clGetPlatformIDs@12

如何关闭名称修改?

3 个答案:

答案 0 :(得分:1)

不是我对opencl库有任何线索,而只是写

extern "C" {
    #include <CL/cl.h>
}

可能有助于解决C / C ++名称重整冲突。

答案 1 :(得分:1)

将默认调用约定设置为cdecl。在Visual Studio中,这是在项目属性Configuration Properties - &gt;中。 C / C ++ - &gt;高级窗格。

答案 2 :(得分:1)

我认为您链接到错误的库版本。应该有一个x86(Win32)版本和一个x64版本。默认情况下,VS2013创建x86(Win32)C ++应用程序。切换库,或将项目更改为x64。请参阅http://msdn.microsoft.com/en-us/library/9yb4317s.aspx