かなり大きなプロジェクトのために.soをコンパイルしようとしていますが、ファイルのいずれかに書かれているテンプレートやその他のクラスが完成した.soファイルにないことが問題になっています。テンプレートクラス定義を共有ライブラリにする方法を教えてください。
私はファイルを作った:私はあなたにnmでのフル出力を惜しまないだろうが、定義された非テンプレート機能のすべてがある、とテンプレートの機能のどれ
g++ -shared -fPIC -Wall filename1.cpp -o libfilename1.so
、テンプレート化されたクラス、またはクラスがあります。クラス宣言で__attribute__ ((visibility=("default")))
を使ってみましたが、何もしていないようです。
おそらくテンプレートは*テンプレート*であり、具体的なクラスではないからです。例えば'std :: vector'はテンプレートです。 'std :: vector'は具象クラスです。 –
テンプレートをコンパイルするにはインスタンス化する必要があります。結論として、共有ライブラリにテンプレートを置くことはできません。 – DeiDei
エクスポートされたテンプレート関数の一部をインスタンス化しますか? – em2er