ホームページ  >  記事  >  バックエンド開発  >  質問の形式と記事の内容を考慮した、いくつかのタイトルのオプションを次に示します。 **短く直接的:** * **C クラスを DLL からエクスポートして動的にロードするにはどうすればよいですか?** * **遅い-

質問の形式と記事の内容を考慮した、いくつかのタイトルのオプションを次に示します。 **短く直接的:** * **C クラスを DLL からエクスポートして動的にロードするにはどうすればよいですか?** * **遅い-

Susan Sarandon
Susan Sarandonオリジナル
2024-10-26 12:25:02617ブラウズ

Here are a few title options, taking into account the question format and the article's content:

**Short & Direct:**

* **How Do I Export and Dynamically Load C   Classes from a DLL?**
* **Late-Binding with C   Classes in DLLs: What Are the Options?**

DLL からの C クラスのエクスポート: 遅延バインディングに関する考慮事項

DLL から関数をエクスポートする場合、一般的に __declspec(dllexport) ディレクティブが使用されます。しかし、C クラス全体をエクスポートして動的にロードするにはどうすればよいでしょうか?

LoadLibrary() による遅延バインディング

LoadLibrary() を使用してクラスを直接ロードすることは、通常は不可能です。代わりに、クラスに動的にリンクするには 2 つのアプローチが利用可能です。

アプローチ 1: ファクトリ関数とアセンブラ

ファクトリ関数を作成してオブジェクトをインスタンス化し、アセンブラを使用してそれらを後で DLL のオフセットにリンクします。 DLLを動的にロードします。このアプローチについては、[DLL から C オブジェクトを動的にロードする](https://www.codeproject.com/Articles/18878/Dynamically-loading-objects-from-DLLs) で詳しく説明されています。

アプローチ 2 : 遅延ロード DLL

遅延ロード DLL を利用します。これにより、実行時に DLL とそのエクスポートを動的にロードできます。ただし、この方法はすべてのプラットフォームで利用できるわけではありません。

ヘッダーとライブラリを使用したコンパイル時リンク

コンパイル時リンクの場合は、次のいずれかを実行できます。

  • エクスポートされたクラス シンボルを組み込み、適切なインポート ライブラリとリンクすることで、リンカーに処理させます。
  • プリプロセッサ マクロを使用して、エクスポート動作を明示的に制御します。これは、エクスポートされたシンボルを使用して DLL を作成するときによく使用されます。 Visual Studio は、[シンボルのエクスポート] オプションを有効にして DLL を作成するときに、これらのマクロを自動的に生成します。

以上が質問の形式と記事の内容を考慮した、いくつかのタイトルのオプションを次に示します。 **短く直接的:** * **C クラスを DLL からエクスポートして動的にロードするにはどうすればよいですか?** * **遅い-の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。