2012-04-22 27 views
3

私はMinGW用にGMPを構築しました。私が使用しているIDEはCode :: Blocksです。私はGMPのC言語機能に問題はありません。しかし、私はC++に問題があります。私が実行しようとしたプログラムは、このような単純なあるGMPライブラリ、C++、MinGW、Code :: Blocksでコンパイルエラー

#include<iostream> 
#include<gmpxx.h> 
using namespace std; 

main() 
{ 
    mpz_class a; 
    a=12345; 
    cout<<"value"<<a<<"\n"; 
    return 0; 
} 

そして、私が手にエラーが今、いくつかの追加データ

F:\Compilers\C_Libraries\GMP\lib\libgmpxx.a(osmpz.o):osmpz.cc|| undefined reference to `__gmpz_get_str'| 
F:\Compilers\C_Libraries\GMP\lib\libgmpxx.a(osfuns.o):osfuns.cc:(.rdata+0x1c)||undefined reference to `__gmp_asprintf_memory'| 
F:\Compilers\C_Libraries\GMP\lib\libgmpxx.a(osfuns.o):osfuns.cc:(.rdata+0x20)||undefined reference to `__gmp_asprintf_reps'| 
F:\Compilers\C_Libraries\GMP\lib\libgmpxx.a(osdoprnti.o):osdoprnti.cc|| undefined reference to `__gmp_doprnt_integer'| 
F:\Compilers\C_Libraries\GMP\lib\libgmpxx.a(osdoprnti.o):osdoprnti.cc|| undefined reference to `__gmp_asprintf_final'| 
||=== Build finished: 5 errors, 0 warnings ===| 

されています

  1. は私がいずれかを持っていませんC関数の問題また、私は< <文を削除すると、ファイルがコンパイルされて正常に動作します。この問題はおそらく、オーバーロードされた演算子によるものです。
  2. libgmpxx.aとlibgmp.aはコンパイラにリンクされています。エラーメッセージにも表示されます。
  3. 問題はlibgmpxx.aだけで発生している可能性があります。だから、私は再びライブラリを作りましたが、ファイルは同じです。
  4. このチュートリアルでは、MinGW用のMSYSでGMPをビルドしました。 http://www.cs.nyu.edu/exact/core/gmp/http://suchideas.com/journal/2007/07/installing-gmp-on-windows/
  5. 私が使っているGMPのバージョンは5.0.4です。

私が知りたいことは、何が問題なのでしょうか?どのように解決できるのでしょうか? そして、解決できない場合、5.0.4版の作業ファイルがある場合は、それを共有してください。 :(

答えて

2

私はあなたのプログラムを構築するためのコマンドが間違った順序でlibgmp*ライブラリを指定する疑いがあるlibgmp.aライブラリがlibgmpxx.aライブラリの後に指定されていることを確認してください:。彼らは他の順序で指定されている場合

-lgmpxx -lgmp 

libgmpxx.aライブラリからの依存関係に引っ張ったときに、その後、libgmp.aライブラリが検索されません

ld linker's docs on the -l optionから:。

リンカーは、コマンドラインで が指定されている場所でアーカイブを1回だけ検索します。アーカイブに、 というシンボルが、コマンドラインでアーカイブ の前に出現したオブジェクトで定義されていないと定義されている場合、リンカーは適切なファイル( )をアーカイブに含めます。ただし、後でコマンドラインに表示される オブジェクトに定義されていないシンボルによって、リンカーは アーカイブを再び検索しません。

を参照してください - 。。。アーカイブを検索 複数回にリンカを強制する方法のための(オプションを

あなたは、コマンドラインで同じアーカイブを複数回表示されることがあり

+0

おかげでそれを解決問題:注文は問題だとは思わなかった:\ もう一度ありがとう。:) – ponir

関連する問題