共有ライブラリ/ .dllとクラスのインポート/エクスポートに関する質問があります。いくつかの研究の後で私が理解していることは、次の2つの方法です: インターフェイスを使用せずに移植可能な方法でクラスをdllにエクスポートしますか?
これは私が知っている唯一の2つの方法です。最初は0の移植性を提供するので、no-noです。もう一つは便利ですが、目的を達成する.dllの良いプログラミングデザインは、異なるコンストラクターごとに異なるコンストラクター関数を必要とし、POD型のみをパラメーターとして使用でき、多くを失うことに気付くと迷惑になりますオーバーロードされた関数やデフォルトの関数引数などのC++クラスの利点
ライブラリをユーザーに提供することになっている.dllの場合、たとえば2番目の方法でも、クラスのコレクションは本当に不便になります。だから私はここで解決策が何か疑問に思っていますか?主要なコンパイラごとに異なる.dllを最初の方法でコンパイルするだけですか?大きなライブラリの共有ライブラリ版はどのように機能しますか?たとえば、wxWidgetsは.dllバージョンも提供しています。どのように彼らはインターフェイスソリューションを避ける.dllのエンドユーザーによってクラスの通常の使用を達成するのですか?
C++には標準ABIがありません。真の移植性を望むなら、Cに固執する必要があります。 –
私はそれを理解しています。本当に移植可能な言語はC言語だけですが、私の疑問はまだありません。 wxWidgetsのような大きなポータブルライブラリは、どのように動的/共有ライブラリを持つことができますか? – Lefteris
私はwxWidgetsがソース形式で配布し、あなた自身のコンパイラ用にビルドできると信じています。 –