C++のLinuxでは、一連のコードを静的なlib(.a)にリンクすることで共有ライブラリを構築しています。私は静的ライブラリで定義されたメソッドを持っています。私は静的ライブラリ内のシンボルを印刷するNM -Cを使用する場合であるとして表示されます。C++静的ライブラリのstd :: stringに関連する未定義のシンボル
Alembic::AbcCoreFactory::v9::IFactory::getArchive(std::string const&, Alembic::AbcCoreFactory::v9::IFactory::CoreType&)
シンボルがファイル(私が構築していますライブラリ)の.so出力で定義されていないが、私は未定義の一覧を表示するときNMを使用してシンボル-ucそれが印刷:
Alembic::AbcCoreFactory::v9::IFactory::getArchive(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Alembic::AbcCoreFactory::v9::IFactory::CoreType&)
差一つの第一の使用のstd ::文字列CONST &さと第二のSTD :: __ 1 ::のbasic_string、STD :: __ 1 ::アロケータ> CONST &を使用
なぜそれがいいのか理解しようとしていますシンボルを見つける。彼らは本質的に同じなので、2人は一致してはいけませんか?
私は、Unreal Editor 4 for Linuxに付属のAlembic Importerをコンパイルしようとしています。私がリンクしようとしているライブラリは、alembicライブラリです。
あなたの質問は不明です。 「Linux上で静的なlib(.a)を共有lib(.so)にリンクするのはどういう意味ですか?既存の.aファイルを取得し、それを.soファイルに再リンクしていますか? .aファイルを既存の.soファイルにリンクしていますか?あなたが "静的なlib"ファイルをリンクしている場合、 "出力.soファイル"はどこから来たのでしょうか?あなたはあなたの質問をより明確にする必要があります。 –
libstdC++とlibC++のようなものにできますか? .aをビルドするときと同じように '-stdlib = libstdC++'を使い、.soをビルドするときには '-stdlib = libC++'あるいはその逆です。 – Paul
応答いただきありがとうございます。私はUnreal Editor用のプラグインを作成しています。これは共有lib(最終出力.so)です。その共有ライブラリは静的ライブラリに依存しています。だから私は、コードと既存の.aファイルの束から新しい.soを作成しています。 – Luke