2017-03-03 14 views
0

C++ファイルからCでVLFeat Libariesを使用します。 g ++のチュートリアルでは、次のようにコンパイルされた基本的な "Hello World"の例を示します。C++で使用するCライブラリのライブラリパスを環境に追加するには

g++ main.cpp -o vlfeat-test -I /disk/no_backup/lesi/vlfeat-0.9.20/ -L /disk/no_backup/lesi/vlfeat-0.9.20/bin/glnxa64/ -lvl 

これは問題なく動作します。私が今欲しいのは、私の.bashrcにライブラリを追加することですので、私は、余分なフラグは必要ありません。

export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/disk/no_backup/lesi/vlfeat-0.9.20 
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/disk/no_backup/lesi/vlfeat-0.9.20/bin/glnxa64 

とこのようにそれを使用します。残念ながら、私は次のエラーを取得する

g++ main.cpp -o vlfeat-test 

/tmp/cc6tzB55.o: In function `main': 
main.cpp:(.text+0x10): undefined reference to `vl_get_printf_func' 
collect2: error: ld returned 1 exit status 

私は間違っていますか?

extern "C" { 
    #include <vl/generic.h> 
} 

int main (int argc, const char * argv[]) { 
VL_PRINT ("Hello world!\n") ; 
    return 0; 
} 

VLFeatライブラリのリンク:ここ

はチュートリアルから、「Hello World」のコードです http://www.vlfeat.org/index.html

答えて

2

あなたは、ヘッダーを検索する場所を指定しますが、あなたはにリンクするようにコンパイラに教えていません図書館。

「このCファイルにはこのヘッダーが含まれています」から「このライブラリとこのプログラムをリンクするのが良い」というマジックマッピングはありませんが、そのようには機能しません。

は、私は、3つの異なるライブラリファイルに実装された関数を宣言し、単一unwind-mess.hヘッダとライブラリを作成し、ライブラリlibcream.alibmeringue.alibberry.a呼び出すことができます。

コンパイラにリンクする必要がある追加のライブラリコードがあることを伝えるには、まだ-lvlオプションが必要です。

+0

うん、それはやったよ。ありがとう! – user4457190

関連する問題