3

Microsoft Visual C++ 10 でプログラムをコンパイルしており、PDCurses ライブラリを使用しています。pdcurses.lib にリンクするように構成しましたが、アプリケーションを実行しようとすると、システムは「pdcurses.dll」が見つからないと文句を言います。それについて不平を言うべきではありません。以前は MinGW (GCC) でプログラムをコンパイルしていましたが、アプリケーションを実行しようとしても DLL について尋ねられません。MSVC が PDCurses を静的にリンクするにはどうすればよいですか?

4

2 に答える 2

8

MSVC.libファイルでは、次の 2 つの形式を取ることができます。

  1. 静的ライブラリ
  2. インポート ライブラリ

前者を使用して、DLL からエクスポートされたエントリ ポイントをアプリケーションに認識させることができます。このエントリ ポイントは、PE ファイルのインポート ディレクトリ (または遅延ロード インポートの場合は別の同様の場所) に書き込まれます。

ただし、後者は実際には、参照されるすべての関数に含まれるコードを最終的なバイナリにリンクします。これはあなたが望むものですが、リンクしたいライブラリのリリースで静的ライブラリが提供されていない場合は、ソース コードからその静的ライブラリを自分で構築する必要がある場合があります。

ただし、別の可能性があります。リンカーが.libファイルを見つけるために間違ったディレクトリを渡している可能性があります。この場合、静的ライブラリではなくインポート ライブラリに対してリンクします。ビルド ログで使用されているパスを確認してください。ただし、これは、ライブラリの配布に両方のタイプのライブラリが含まれている場合にのみ適用されます。

于 2012-05-12T00:31:49.757 に答える
-4

dll がパスにある必要があります。

于 2012-05-12T00:35:48.960 に答える