2011-09-05 26 views
0

lib hqpを使用していくつかのソフトウェアをコンパイルしたいという問題があります。このlibはadolcを使いますが、古いバージョンの廃止された関数です。私は新しいバージョンだけを持っているので、1つのクラス(adoublev)がなくなり、コンパイルエラーが発生します。今ではラッパーを作成しようとしていますが、ここではエラーが発生します。C++:関数への未定義参照

前:私は今まで問題を認識しておらず、新しいバージョンのadolcでhqpをコンパイルしました。私は必要な演算子が実装された単純なadoublevクラスを作成しました(演算子[])。

ここで例をコンパイルします。私は得る

Prg_T2Topt.o:(.rodata._ZTV10Prg_T2Topt[vtable for Prg_T2Topt]+0x20): 
    undefined reference to `Omu_Program::consistic(int, double, adoublev const&, adoublev const&, adoublev&)' 

注意:Prg_T2Topt。*は私の例であり、Omu_Programはhqpの一部です。

hqpの最初のインストールでは、adoublev(gcc/g ++が使用されています)の宣言/定義が欠落しているというエラーが表示されていませんでしたか? 私はもうadoublevを使用しないようにhqpを更新する必要がありますか?

私の例のコンパイルでは、このメソッドがこの例では実装されていないのにconsisticに関するエラーが発生するのはなぜですか?

例はhttp://codepad.org/Cv0tdoyShttp://codepad.org/ezQQPUg4で見つけることができます(ビット長いです)

+0

一般的に、コンパイラ(またはリンカ)は、何かを使用しようとしていない限り、未定義の参照については気にしません。何が起こっているのかは、あなたが使っているライブラリ関数のうちの1つが、リンクするのではなくコンパイルしているので、ライブラリーをビルドするときにそれを呼び出そうとしているということです。 – Dan

答えて

0

あなたのクラスPrg_T2ToptがOmu_Programに基づいているので、それは(consistic含むOmu_Programのメソッドを継承します)、そしてあなたのクラスがconsisticオーバーライドしていないので( )、コンパイラはOmu_Program :: consistic()を使用しようとしています。

あなたはどのライブラリにリンクしていますか?リンクフェーズ中に何か不足しているように見えます。

+0

はい、@istepuraは正しいです...あなたはリンクフェーズで何かを見逃しています...あなたはどこのライブラリ(あなたが使用している)がどこにあるかコンパイラに伝える必要があります... – c0da

関連する問題