実行可能ファイルで定義されたクラスを使用するには、DLLが必要です(DLLと実行可能ファイルは同じコンパイラでコンパイルされます)。しかし、このクラス定義のソースコードをDLLで使用できるようにしたくはなく、宣言のみを使用します。
これを行うための1つの可能な方法は、必要なすべてのクラスメソッドを作成することですvirtual(DLLリンカーがこれらのメソッドの定義を必要としないようにするため)。このアプローチの欠点:
- を使用して、エクスポートされたクラスのオブジェクトをDLLコードで作成できません
new(実行可能ファイルのコードで追加の関数を作成する必要があります)。 virtual必要がない場合でも、これらすべてのメソッドを作成する必要がありますvirtual。
__declspec(dllexport)Microsoftのstorage-class拡張属性を使用して、DLLから実行可能ファイルにクラスをエクスポートする方法があります。同じ手法を使用して、実行可能ファイルからDLLにクラスをエクスポートする方法はありますか?
私の古いBorlandC6コンパイラでは、実行可能プロジェクトのビルド中にインポートライブラリを作成できません。(したがって、DLLをコンパイルするときに、リンカーは、インポートされたすべての非仮想クラスメソッドに対して未解決の外部エラーメッセージを表示します。)これは、まさにこのコンパイラの制限ですか、それとも重要な何かが欠けているのでしょうか。