2009-06-05 15 views
2

...のコンパイラ間の非互換性の問題を解消するには、thisまでのフォローアップが必要です。C++ダイナミックライブラリ

  • 異なるコンパイラは、それが不可能でコンパイラAで構築されたC++動的ライブラリを使用できるようになります別の名前の装飾を、使用します。私は私がすることを学んだ私の参照先の質問に与えられてきた答えから

    コンパイラBで構築されたプロジェクト

  • ライブラリは、プロジェクト内のn個のヘッダファイルとソースファイル、またはシンボルをエクスポートする静的保存用として構築できます。 (別のコンパイラで使用するためにライブラリを再構築することはできません)

言われたことを踏まえてSDLを詳しく見てみると、リンクには2つのレイヤーがあることがわかりました。私のSDLプロジェクトでは、libSDL.aと静的にリンクしています。これはSDL.dllと動的にリンクするため、異なるコンパイラ用に異なる.dllバージョンが不要になります。

質問は、これが本当に問題であるかどうか、問題の実行可能な解決策か、何か(そして何が)不足していますか?

答えて

3

あなたのアプローチは正しいと思います。私はこのようにそれを置くところ:異なるコンパイラで使用できるように、DLLの

  • 、それはのdllでいつものよう
  • (彼らはextern Cを使用してC++コンパイラを使ってコンパイルすることができます)のみC関数が含まれている必要があり、静的インポートライブラリを使用すると、DLL内の関数を直接呼び出すことができます。
  • 通常のインポートライブラリの代わりに、C++でDLLのC関数をラップするラッパーライブラリを使用できますクラスと関数
+0

それを指摘してくれてありがとう(と申し訳ありません):s "問題は静的ライブラリには存在しません"ということは間違っています。私は今それを修正します。 – zyndor

関連する問題