77

DLL ファイルとインポート ライブラリ (.lib) ファイルをビルドする単一の Visual Studio プロジェクトが必要です。(インポート ライブラリは、その DLL ファイルを使用する他のプロジェクトでその DLL ファイルを読み込む処理を行う、静的にリンクされたライブラリです)。

そこで、Visual Studio C++ 2008 Express Edition に移動し、クラス ライブラリ タイプの新しいプロジェクトを作成し、「構成タイプ」を「動的ライブラリ (.dll)」に設定しました。

しかし、ソリューションをビルドすると、表示される唯一の関連する出力ファイルは DLL ファイルです。LIB ファイルが生成されていません。プロジェクト ディレクトリとすべてのサブディレクトリ (Release および Debug) を調べました。

MSDN には、「DLL のビルド時にリンカーがインポート ライブラリを作成する」と記載されているため、LIB ファイルと DLL ファイルを同時にビルドすることは可能だと思います。 また、この Web サイトの別のユーザーが、Visual C++ を使用して LIB ファイルと DLL ファイルを同時に作成しています

どうすればそれができますか?

4

4 に答える 4

85

DLL プロジェクトには実際のエクスポートがありますか? エクスポートがない場合、リンカーはインポート ライブラリの .lib ファイルを生成しません。

VS の非 Express バージョンでは、インポート ライブラリ名はプロジェクト設定で指定されます。

Configuration Properties/Linker/Advanced/Import Library

Expressでも同じだと思います(名前を構成する機能さえ提供されている場合)。

于 2009-02-24T23:12:28.740 に答える
39

わかりましたので、 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 ウィザードで [シンボルのエクスポート] ボックスをクリックするか、コンピューター プログラマーのロボトミーに賛成票を投じることで回避できた可能性があります。

于 2011-10-24T13:20:06.807 に答える
24

「クラス ライブラリ」を選択することで、C++ の CLI (マネージ) 拡張を使用して .Net ライブラリを作成するように誤って指示していました。

代わりに、Win32 プロジェクトを作成し、次のページのアプリケーション設定で [DLL] を選択します。

そのルートに進みたい場合は、これらのライブラリの選択から MFC DLL または ATL DLL を作成することもできますが、そうではないようです。

于 2009-02-24T23:13:57.490 に答える
9

ここのプロジェクト設定で定義名も指定する必要があります。

構成 > プロパティ/入力/詳細/モジュール > 定義ファイル

于 2011-01-24T17:22:31.393 に答える