Я пытаюсь что-то скомпилировать, чтобы попробовать openCl, но у меня есть несколько проблем ..
Здесь код
prova.c
#include <stdio.h>
#include <CL/opencl.h>
#include "Utils\util.h"
#include <malloc.h>
int main(){
cl_int error = 0; // Used to handle error codes
cl_int max_platforms = 1; // The maximum number of platforms
cl_uint adviable_platforms = 0; //The adviable number of platforms
cl_platform_id* platform;
error = clGetPlatformIDs(0, NULL, &adviable_platforms);
if(adviable_platforms == 0)
{
printf("No adviable platforms.\n");
return -1;
} else {
platform = (cl_platform_id*)malloc(adviable_platforms * sizeof(cl_platform_id));
}
error = clGetPlatformIDs(adviable_platforms, platform, NULL);
printf("clGetPlatformIDs: %s\n", clErrorString(error));
return 0;
}
Я компилирую на win 7 64 с помощью mingw32. Заголовки opencl находятся в каталоге include mingw, в то время как utils.h (внутри каталога Utils внутри каталога prova.c) определяет clErrorString (который просто преобразует ошибку в более удобочитаемую строку).
Для компиляции я использую
gcc -L\Utils prova.c
Но я всегда получаю
C:\[stuff]\ccEjYQbj.o:prova.c:(.text+0x42): undefined reference to 'clGetPlatformIDs@12'
C:\[stuff]\ccEjYQbj.o:prova.c:(.text+0x8d): undefined reference to 'clGetPlatformIDs@12'
C:\[stuff]\ccEjYQbj.o:prova.c:(.text+0x9e): undefined reference to 'clErrorString'
Я не очень хорошо разбираюсь в компиляторах, так что я представляю, что мне чего-то не хватает, но я действительно не знаю, что ..
EDIT:
С уважением, я попробовал каждую команду прийти в голову. используя -L для включения каталогов, -l для ссылки на файлы, используя ar ..
Это последний "скрипт", который я пробовал
set PATH=%PATH%;C:\Python26;C:\MinGW\bin;C:\MinGW\lib
cd Utils
gcc -c util.c -l"C:\Program Files (x86)\AMD APP\lib\x86_64\libOpenCL.a" -o util.o
ar rcs libutil.a util.o
cd..
pause
gcc -c prova.c -l"Utils\libutil.a" -o prova.exe
pause
EDIT2:
@echo off
set PATH=%PATH%;C:\Python26;C:\MinGW\bin;C:\MinGW\lib
cd Utils
gcc -Wall -c util.c -L"C:\Program Files (x86)\AMD APP\lib\x86_64\" -o util.o
ar rcs libutil.a util.o
cd..
pause
gcc -Wall -c prova.c -L"C:\Program Files (x86)\AMD APP\lib\x86_64\" -l"Utils\libutil.a" -o prova.exe
pause
Нет ошибок, единственное предупреждение: max_platform не используется. Затем я нахожу util.o и libutil.a (размер 5kb) в Utils и prova.o (размер 1kb). Если я пытаюсь запустить файл prova.o, он говорит, что версия файла несовместима с текущей версией Windows, проверьте версию системы (x86 или x64) и обратитесь к распространителю программного обеспечения