1

ここでの構成に関する質問は、将来他の人に役立つことを願っています。

Khronos サイトから必要なすべてのファイルを含む "C:\openCLcode\include\" フォルダーを作成しました: http://www.khronos.org/registry/cl/

ここで、openCL を実行する Code::Blocks プロジェクトを作成したいと考えています。そこで、いくつかのサンプル コードを貼り付けて、インクルード パスを変更します。

私の.cファイルでは:

#include <C:\openCLcode\include\cl.h>

そして、そのcl.hファイル内で不平を言ったcl_platform.hので、そのパスも修正しました:

#include <C:\openCLcode\include\cl_platform.h>

今私が得る問題は次undefined reference to 'clGetPlatformIDs@12'のとおりです。問題のある関数と行は次のとおりです。

cl_device_id create_device() {

   cl_platform_id platform;
   cl_device_id dev;
   int err;

   /* Identify a platform */
    //////////////THIS IS THE LINE WITH ERROR:////////////
   err = clGetPlatformIDs(1, &platform, NULL);
    //////////////////////////////////////////////////////
   if(err < 0) {
      perror("Couldn't identify a platform");
      exit(1);
   }

   /* Access a device */
   err = clGetDeviceIDs(platform, CL_DEVICE_TYPE_GPU, 1, &dev, NULL);
   if(err == CL_DEVICE_NOT_FOUND) {
      err = clGetDeviceIDs(platform, CL_DEVICE_TYPE_CPU, 1, &dev, NULL);
   }
   if(err < 0) {
      perror("Couldn't access any devices");
      exit(1);
   }

   return dev;
}

インクルードスキームを本当に台無しにしたような気がします....誰かがこれについてもっと良い方法を勧めてもらえますか?

とても有難い

4

1 に答える 1

6

libOpenCL.aライブラリをプロジェクトにリンクする必要があります。

1)プロジェクトを右クリックします(コードブロック内)

2)「ビルドオプション」を選択します

3)[リンカー設定]タブを選択します

4)「追加」ボタンを押す

5)openCLライブラリを使用してパスを選択し、libOpenCL.aを選択します。

または、プロジェクトでOpenCLをコンパイルすることもできます:)プロジェクトにすべてのopenCL .cppファイルを追加して、ビルドしてみてください。

于 2012-11-06T01:09:20.063 に答える