DLL からの C クラスの動的ロード
DLL から C クラス全体をエクスポートすると、パブリック メソッドとプロパティの動的ロードが可能になります.
ヘッダーとライブラリを使用したコンパイル時リンク
コンパイル時リンクの場合は、クラス宣言内で標準の __declspec(dllexport) ディレクティブを使用します。これにより、クラス シンボルがコンパイラに公開されます。クラス宣言を含むヘッダー (.h) ファイルと、シンボル定義を含むライブラリ (.lib) ファイルを作成します。実行可能ファイルをリンクするときは、ヘッダーを含めてライブラリとリンクします。
実行時の動的ロード
クラスの動的ロードは、LoadLibrary() と GetProcAddress() で可能です。 。ただし、このアプローチは、遅延バインディングの問題のため、通常、クラスでは使用されません。
ファクトリ関数アプローチ
DLL のロード後にクラスに動的にリンクするには、アセンブラを利用するファクトリ関数を使用して、新しく作成されたオブジェクトを適切なオフセットに接続します。このメソッドにより、適切なクラス機能が保証されます。詳細については、提供されているリンクを参照してください。
遅延ロード DLL
遅延ロード DLL を使用すると、DLL を後でロードできます。このオプションには、必要に応じて DLL を動的にロードする EXE 内でのサンク関数の定義が含まれます。ただし、追加の構成が必要であり、パフォーマンスが低下する可能性があります。
プリプロセッサ マクロによる暗黙的リンク
暗黙的リンクには、DLL からのシンボルの参照と、リンカーによる解決が含まれます。彼ら。このアプローチは、アプリケーションの起動時に DLL がロードされる場合に適しています。ヘッダー ファイルでプリプロセッサ マクロ (_declspec(dllimport) など) を使用すると、エクスポートされたクラス シンボルがコンパイラに公開されます。
推奨事項
プリプロセッサ マクロとの暗黙的なリンクは、通常、 C クラスの動的ロードに推奨されます。効率的なシンボル解決と Visual Studio などの一般的な開発ツールとの互換性を提供します。
以上がDLL から C クラスを動的にロードする方法: 暗黙的リンクと動的ロード?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。