1

これをコンパイルしようとしています。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)

私のプロジェクトのプロパティには次のものがあります。

  1. C:\Program Files (x86)\AMD APP\include\ を追加のインクルード ディレクトリとして追加
  2. C:\Program Files (x86)\AMD APP\lib\x86_64 を追加のライブラリ ディレクトリとして追加
  3. 追加の依存関係として OpenCL.lib を追加

リストしたエラーは、最後の 2 つの手順を実行したかどうかに関係なく発生します。つまり、最後の 2 つは、何かを助けたり、害を与えたりしているようには見えません。

4

2 に答える 2

3

コメントで提供した回答の要約:

  1. C++ アプリケーションの場合、次のことだけが必要です。#include <CL/cl.hpp>
  2. 正しい OpenCL.lib とリンクしていることを確認してください (32 ビットと 64 ビット)。
于 2013-05-30T19:48:49.420 に答える