私は何時間も問題を解決しようとしましたが、有用なヒントは見つかりませんでした。うまくいけば、皆さんが私を助けてくれます:
いくつかの有用なデータ:
OS: Windows 8 Basic 64bit
ライブラリ: Intel OpenCL SDK
コンパイラ: MinGW(-gcc) (最新バージョン)
IDE: Code::Blocks (最新バージョン)
最小限の動作しないコード:
#include <stdlib.h>
#include <CL/cl.h>
int main(void)
{
cl_uint available;
cl_platform_id* platforms = (cl_platform_id*)malloc(sizeof(cl_platform_id));
cl_int result = clGetPlatformIDs(1, platforms, &available);
free(platforms);
if(result == CL_SUCCESS)
return 0;
return -1;
}
Code::Blocks Global Compiler Settings:
Linker Settings: Intel の OpenCL.lib へのパスを追加 ([...]\Intel\OpenCL SDK\3.0\lib\x64\OpenCL.lib) (その他のオプションとして -lOpenCL も試しました)
コンパイラの検索ディレクトリ: Intels OpenCL-SDK インクルード ディレクトリへのパス ([...]\Intel\OpenCL SDK\3.0\include)
リンカの検索ディレクトリ: Intels OpenCL-Lib ディレクトリへのパス ([...]\ Intel\OpenCL SDK\3.0\lib\x64)
ビルドログ:
mingw32-g++.exe -L"[...]\Intel\OpenCL SDK\3.0\lib\x64" -o bin\Release\openCLTest.exe obj\Release\main.o -s "[...]\Intel\OpenCL SDK\3.0\lib\x64\OpenCL.lib"
obj\Release\main.o:main.c:(.text.startup+0x39): undefined reference to `clGetPlatformIDs@12'
collect2.exe: error: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 0 seconds)
1 errors, 0 warnings (0 minutes, 0 seconds)
彼が適切にリンクしない理由がわかりません。テキストの [...] は、パスを短くするために私が変更したもので、通常は「C:\Program Files (x86)...」になります。
うまくいけば、あなたたちは私を助けることができます! 本当にイライラします!:(
もっと情報が必要ですか?
編集:
わかりました...さらに1時間、私は自分の問題を解決しました。
このヒントが他の人に役立つことを願っ
ています: x86 ライブラリに対して追加でリンクする必要がありました (一部の機能は X64 に実装されていないようです)。
知っておくと便利 -.-'''