Я пытаюсь скомпилировать код 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
.
Как я могу отключить управление именами?
Я думаю, вы связываетесь с неправильной версией библиотеки. Должна быть версия x86 (Win32) и версия x64. По умолчанию VS2013 создает приложения x86 (Win32) C++. Либо меняйте библиотеки, либо измените свой проект на x64. См. Http://msdn.microsoft.com/en-us/library/9yb4317s.aspx.
Не то, чтобы я узнал о библиотеке opencl
, но просто написал
extern "C" {
#include <CL/cl.h>
}
возможно, поможет решить конфликтные ситуации с C/C++.
Задайте соглашение о cdecl
по умолчанию для cdecl
. В Visual Studio это находится в свойствах проекта. Свойства конфигурации → C/C++ → Расширенная панель.
cl.h
уже включает использованиеextern "C"
, но вы его не получаете. Можете ли вы опубликовать версии ОС и компилятора вместе с командной строкой компиляции?