DLLファイルとインポートライブラリ(.lib)ファイルをビルドする単一のVisual Studioプロジェクトが必要です(インポートライブラリは、その=の読み込みを処理する静的にリンクされたライブラリですDLLそれを使用する他のプロジェクトのファイル)。
そこで、Visual Studio C++ 2008 Express Editionに行き、クラスライブラリのタイプの新しいプロジェクトを作成し、「構成タイプ」を「ダイナミックライブラリ(.dll)」に設定しました。
しかし、ソリューションをビルドすると、表示される関連する出力ファイルはDLLファイル; LIBファイルが生成されないのがわかります。プロジェクトディレクトリとすべてのサブディレクトリ(リリースおよびデバッグ)。
LIBとDLLファイルを同時に構築することは可能だと思います。なぜなら、MSDNでは DLL is built。 " また、 このWebサイトの別のユーザーがLIBを作成しており、DLL Visual C++ を使用した時間。
どうすればそれができますか?
「クラスライブラリ」を選択すると、誤ってC++のCLI(管理)拡張を使用して.Netライブラリを作成するように指示していました。
代わりに、Win32プロジェクトを作成し、次のページのアプリケーション設定で「DLL」を選択します。
MFC DLLまたはATL DLLこれらのライブラリの選択から、そのルートに行きたい場合は作成できますが、そうではないようです。
DLLプロジェクトには実際のエクスポートがありますか?エクスポートがない場合、リンカーはインポートライブラリの.libファイルを生成しません。
VSの非Expressバージョンでは、インポートライブラリ名がプロジェクト設定で指定されています:
Configuration Properties/Linker/Advanced/Import Library
Expressでも同じであると仮定します(名前を構成する機能さえ提供する場合)。
OK、それで http://binglongx.wordpress.com/2009/01/26/visual-c-does-not-generate-lib-file-for-a-dll-project/からの答えを見つけました は、この問題はシンボルをエクスポートしないために発生したことを示し、さらにlibファイルを作成するためにシンボルをエクスポートする方法を指示します。そのためには、DLLの.hファイルに次のコードを追加します。
#ifdef BARNABY_EXPORTS
#define BARNABY_API __declspec(dllexport)
#else
#define BARNABY_API __declspec(dllimport)
#endif
BARNABY_EXPORTSとBARNABY_APIは、プロジェクトの一意の定義です。次に、エクスポートする各関数の前に単に次のものを置きます。
BARNABY_API int add(){
}
この問題は、新しいプロジェクトの[シンボルのエクスポート]ボックスをクリックすることで回避できた可能性がありますDLL Wizardまたはコンピュータープログラマーのロボトミーにyesと投票することにより。
また、プロジェクト設定でdef名を指定する必要があります。
設定>プロパティ/入力/詳細設定/モジュール>定義ファイル