ArrayFire ユーティリティを使用して C/C++ アプリケーションをコンパイルおよび実行するために、Ubuntu 14.04 で Eclipse (Mars 2.0) をセットアップしようとしています。私は既に ArrayFire を /opt/ARRAYFIRE/arrayfire-3 にコンピューターにインストールしており、最初に Eclipse を使用して ArrayFire のパフォーマンスをテストする非常に単純な例を試しています。
簡単な C++ テスト コードを作成しました。
#include <iostream>
#include <arrayfire.h>
using namespace af;
using namespace std;
int main() {
const int N = 5;
int nBytes = N * sizeof(int);
int hostarr[N] = {3,1,4,1,5};
float f[8] = {1,2,4,8,16,32,64,128};
af::array aux(2,4,f);
cout << "Well done!!!" << endl;
return 0;
}
ArrayFire のすべてのインストール手順 (前提条件を含む) に従いました。次に、Eclipse プロジェクトの C/C++ ビルド設定に ArrayFire ヘッダー "include" (-l) とライブラリ "lib" (-L) インストール ディレクトリ パスを設定します。
私の特定のケースでは:
- GCC C++ コンパイラの場合 -> インクルード: /opt/ARRAYFIRE/arrayfire-3/include
- GCC C コンパイラ -> インクルード: /opt/ARRAYFIRE/arrayfire-3/include
- GCC C++ リンカー -> ライブラリ: /opt/ARRAYFIRE/arrayfire-3/lib
これは、私が常に新しいライブラリに対して行ってきた通常の手順です。ただし、gcc でコンパイルしようとすると、次のエラーが発生します。
Invoking: GCC C++ Linker
g++ -L/opt/AMDAPPSDK-3.0/lib -L/opt/ARRAYFIRE/arrayfire-3/lib -o "classifier" ./src/classifier.o -lOpenCL
./src/classifier.o: En la función `main':
/home/ECLIPSE/classifier/Debug/../src/classifier.cpp:23: referencia a `af::array::array<float>(long long, long long, float const*, af_source)' sin definir
/home/ECLIPSE/classifier/Debug/../src/classifier.cpp:26: referencia a `af::array::~array()' sin definir
/home/ECLIPSE/classifier/Debug/../src/classifier.cpp:26: referencia a `af::array::~array()' sin definir
collect2: error: ld devolvió el estado de salida 1
(スペイン語でごめんなさい) "sin definir" = 定義されていません。
ヘッダーが適切にリンクされていることはわかっています。これは、宣言を確認でき、コンパイラーが適切に機能するためです。ただし、リンカーは失敗します。
何が問題なのか、何が起こっているのか、誰にも分かりますか?