2

ライブラリアン>コマンドラインから次のオプションを使用しようとしました

/OUT:"mylib.lib" "mylib.dll" /DEF:"mydef.def"

ただし、静的ライブラリのみが生成されました。DLL ファイル名が/OUTディレクティブの前にある場合、DLL のみが生成され、LIB は生成されません。

ライブラリの DLL ファイルと LIB ファイルを作成したいだけで、使用し__declspec(dllimport)たり、__declspec(dllexport)

誰か助けてくれませんか

4

3 に答える 3

2

あなたは物事を混同しています。[ライブラリアン] > [コマンド ライン] 設定は、スタティック ライブラリ プロジェクトをビルドする場合にのみ使用されます。出力ファイル名の拡張子は .lib にする必要があります。/DEF オプションは適用されません。.lib 出力ファイル自体は実行可能ファイルではなく、静的ライブラリは単なる .obj ファイルの袋です。これらは、EXE または DLL をビルドする別のプロジェクトで後で使用する必要があります。

DLL はまったく別の動物であり、実行可能なファイル形式であり、/DEF オプションは、エクスポートされた関数に名前を付けるのに役立ちます。リンカーが .dll をビルドすると、DLL の .lib ファイルも作成されます。これはスタティック ライブラリではなく、DLLのインポート ライブラリです。エクスポートされた関数の名前だけを含む小さなファイルで、静的ライブラリとは似ていません。これは、その DLL を使用する別のプロジェクトをビルドするときに使用できます。

どのようにしてこのピクルスにたどり着いたのかわかりませんが、間違ったプロジェクト テンプレートで始めたのだと思います。ファイル + 新しいプロジェクト、Visual C++、Win32、Win32 プロジェクト。OK、次にアプリケーションの種類の設定で「DLL」ラジオボタンを選択します。これで、DLL と LIB を生成するようにプロジェクトが適切に構成されました。リンカー、入力、モジュール定義ファイル設定を使用して、DEF ファイルを指定します。

于 2013-10-08T11:47:58.287 に答える