2

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" = 定義されていません。

ヘッダーが適切にリンクされていることはわかっています。これは、宣言を確認でき、コンパイラーが適切に機能するためです。ただし、リンカーは失敗します。

何が問題なのか、何が起こっているのか、誰にも分かりますか?

4

0 に答える 0