1

2つのqt.proファイルがあり、どちらもlibTEMPLATEとstaticlibCONFIGを使用しています。最初のライブラリ(「コア」と呼びます)は、2番目のライブラリ(「foo」と呼びます)の依存関係です。実際、コアのクラスを拡張するfooのクラスがあり、このクラスをBarと呼びます。

別のプロジェクト(libではない)でクラス(fooで定義および実装されているが、コアからクラス(Bar)を拡張している)をインスタンス化すると、次のリンクエラーが発生します。

    /usr/bin/ld: Undefined symbols:
   Bar::Bar()

基本的に、リンカはfoo libで派生したコアlibでクラスを見つけることができませんが、両方のlibを使用している3番目のプロジェクトでクラスをインスタンス化した場合に限ります。この動作は予想されますか?

よろしく、ダンO

更新:派生クラスを使用する前に、3番目のプロジェクトでBarsコンストラクターを直接呼び出すことで修正しました...なぜこれを行う必要があるのか​​誰かが知っていますか?

4

1 に答える 1