共有ライブラリ (C++) と、このライブラリを使用する python モジュールを配布しています。Bullet Physics Library の修正版を (CMake サブプロジェクトとして) ビルドします。Bullet のクラスと関数は 1 つのファイルでのみ使用しbullet_interface.cpp
、すべての Bullet の内容は 内に隠されていnamespace { ... }
ます。
問題は、他の一部のライブラリがシステムの依存関係として Bullet を必要とし、Bullet のシステム バージョンにリンクしていることです。実際、私のライブラリの依存関係の 1 つ ( libopenrave
) は、Bullet シンボルをエクスポートします。(より具体的には、Bullet シンボルをエクスポートするプラグインを動的にロードすることがあります)。
ライブラリをビルドして正しい Bullet 関数を使用する方法があるかどうか疑問に思っていbullet_interface.cpp
ますが、ライブラリは Bullet シンボルを表示しません。ソース コードを変更する必要があったため、システム ブレットを使用できません。ハッキーな解決策の 1 つは、検索と置換を使用してすべての Bullet 関数とクラスの名前を変更することです (ほとんどすべてに文字列 "bt" が含まれます)。より良い方法はありますか?