これをコンパイルしようとしています。AMD SDKを使用しています。前述の SDK に付属しているヘッダー ファイルを使用しています。これらは次の場所にあります。
C:\Program Files (x86)\AMD APP\include\CL
チュートリアルには次のように記載されています。
ヘッダー ファイル C++ で使用される他の外部 API と同様に、OpenCL™ API を使用する場合はヘッダー ファイルを含める必要があります。通常、これはプライマリ インクルード ディレクトリ内のディレクトリ CL にあります。C++ バインディングの場合 (ストレート C API を cl.h に置き換えます):
私は最後のビットが少し混乱していることに気づきました。.h と .hpp の両方を使用しています
#include <CL/cl.h> when this is used it will compile the checkErr function
#include <CL/cl.hpp> when this is used it gives me access to the cl namespace
このコードをコンパイルしようとすると、次のように失敗します。
'clUnloadCompiler': was declared deprecated
追加の詳細 (#include <CL/ch> を削除した後)
次のエラーのリストが表示されるようになりました。
error C4996: Error 2 error LNK2019: unresolved external symbol _clReleaseCommandQueue@4 referenced in function "public: static int __cdecl cl::detail::ReferenceHandler<struct _cl_command_queue *>::release(struct _cl_command_queue *)" (?release@?$ReferenceHandler@PAU_cl_command_queue@@@detail@cl@@SAHPAU_cl_command_queue@@@Z)
error LNK2019: unresolved external symbol _clReleaseContext@4 referenced in function "public: static int __cdecl cl::detail::ReferenceHandler<struct _cl_context *>::release(struct _cl_context *)" (?release@?$ReferenceHandler@PAU_cl_context@@@detail@cl@@SAHPAU_cl_context@@@Z)
私のプロジェクトのプロパティには次のものがあります。
- C:\Program Files (x86)\AMD APP\include\ を追加のインクルード ディレクトリとして追加
- C:\Program Files (x86)\AMD APP\lib\x86_64 を追加のライブラリ ディレクトリとして追加
- 追加の依存関係として OpenCL.lib を追加
リストしたエラーは、最後の 2 つの手順を実行したかどうかに関係なく発生します。つまり、最後の 2 つは、何かを助けたり、害を与えたりしているようには見えません。