私たちのアプリケーションは、いくつかの場所でC++テンプレートを利用しています。私は現在、gcc 3.3.3から4.1.0へ移植しようとしていますが、問題が発生しています。私は小さな共有ライブラリと実行可能ファイルで問題を再現しました。私は、[OK]を、共有ライブラリを構築していますが、実行可能ファイルは次のようにリンクに失敗する:gccからのポート3.3.3から4.1.0、C++のテンプレート、未定義の参照
undefined reference to `MyNumber<int>::~MyNumber()'
undefined reference to `MyNumber<int>::MyNumber(int)'
undefined reference to `MyNumber<int>::number()'
が、私は実行可能ファイル内で直接テンプレートクラスを使用していないと、このすべてが内の実装内にカプセル化されると予想しているだろう共有ライブラリ(おそらく純粋にそうです)。
この問題は、共有ライブラリを使用している場合にのみ表示されます。私は、SLES 11(GCC 4.3.2)上の私たちのアプリケーションを構築するとき、私の問題のほとんどが解決されるように見えるが、私はまだ、次の数を受け取る:
undefined reference to `vtable for MYCLASS<T1, T2>'
このすべての共有ライブラリへの実行可能ファイルをリンクするとき。
コンパイラがあなたにすでに何を伝えているかを判断するのは難しいです。問題を最小限の期間に減らして投稿できますか? –