現在、c++ VS2010 で dll ファイルを生成しています。現在、静的 dll または動的 dll を生成しているかどうかを知りたい 2 つの質問がありました。私のコードには .def ファイルがあり、エクスポートされたすべての関数はその def ファイルで番号付けされています。また、私の関数は __declspec(dllexport) を使用してエクスポートされています。
2 に答える
1
DLL を生成すると、ダイナミックリンク ライブラリが取得されます。生成するメソッドに依存しないため、動的にロードされます。
ただし、アプリケーションから関数にアクセスする方法には違いがあります。
インポート ライブラリ (yourDllName.LIB) を使用すると、アプリケーションのロード時に DLL がロードされます。これにより、静的ライブラリを使用する場合と同様のルック アンド フィールが得られます。
LoadLibrary と GetProcAddress を使用して、関数へのポインターを取得することもできます。次に、DLL エントリポイントへのこれらのポインターを使用して関数を呼び出すことができます。
__declspec(dllexport) メソッドでモジュール エクスポート ファイル (.DEF) を選択して関数をエクスポート テーブルに配置する場合は、気にしません。混乱を避けるために、1 つの方法を使用することをお勧めします。
于 2012-12-02T18:26:44.107 に答える
-1
C++ コードで、シンボル _DLL が定義されているかどうかを確認できます。
#ifdef _DLL
静的ライブラリを構築するときに、関数に序数を割り当てる必要はないと思います。
于 2012-12-02T18:34:05.080 に答える