一緒にリンクしたい 2 つのプロジェクトがあるとします。
- Visual C++ で DLL ファイルにコンパイルされた C++ ライブラリ。
- ライブラリ内のクラスを使用する C++ Builder でコンパイルされた C++ 実行可能ファイル。
標準の C++ ABI はなく、これら 2 つの C++ プロジェクトを直接リンクしようとしても失敗することを認識しています。これを実現できる互換性レイヤーを作成する自動化された優れた方法は何ですか?
たとえば、C++ ライブラリが C インターフェイスを介して公開される可能性があります。次に、実行可能ファイルには、C++ ライブラリによって公開された C インターフェイスをラップするいくつかの C++ クラスが含まれます。C には標準の ABIがあるので、それは機能します。
唯一の問題は、C インターフェイスと C++ ラッパー クラスを自動的に作成する方法です。これを手動で維持することはできません。SWIG プロジェクトは有望に見えますが、残念ながら、C++ は SWIG の Web サイトにリストされているプロジェクトの 1 つではありません。SWIGでやりたいことをする方法はありますか? または、SWIG 以外に、この作業に役立つ別のプロジェクトはありますか?
それとも、これについて間違った方法で行っていますか?
編集: コア C++ ライブラリは、クロスプラットフォームであることを意図しています。実行可能ファイルは、明らかに Windows 固有です。他のプラットフォームでコンパイルできなくなるほどコア ライブラリを汚染したくありません。