3

コードを .exe ではなく .lib ファイルにコンパイルするように VC++ を設定する方法を理解しましたが、lib を他の .obj ファイルと一緒にリンクするのに問題があります。

ライブラリとアプリケーション フォルダをセットアップする方法を次に示します。(これが正しいかどうかはわかりません)

AppFolder
  App.sln
  App.ncb
  *.h
  *.cpp
  Debug
    *.obj
    App.exe

そして、ハードドライブの別の場所...

LibraryFolder
  lib
    Library.lib
  include
    LibrarySolutionFolder
      Library.sln
      Library.ncb
      *.h
      *.cpp
      Debug
        *.obj
        Library.lib

アプリの cpp ファイルからライブラリ *.h ファイルを #include しましたが、すべて正常にコンパイルされました。リンクすると、検索されているすべての.libファイルのリストが表示され、VC++ディレクトリにリストされているにもかかわらず、Library.libがそこにありません。これをリンクするにはどうすればよいですか?(そして、ライブラリ フォルダーを正しく構成していますか?)

4

5 に答える 5

10

プロジェクトのプロパティ:

構成プロパティ -> リンカー -> 入力 -> 追加の依存関係

そこに追加します。

または、ライブラリの .h ファイルに次を追加します。

#pragma comment(lib, "Library")

これにより、自動的に実行されます。

于 2008-10-21T23:32:47.423 に答える
3

VC ++ディレクトリは、リンク中に検索されるディレクトリの場所のリストです。リンク先のライブラリのリストではありません。

プロジェクトリンカー設定の[追加の依存関係]フィールドにlibファイルを追加する必要があります。

于 2008-10-21T23:35:56.340 に答える
1

ライブラリに対してリンクするには、次のいずれかを実行できます。

  • [プロジェクト]->[プロパティ...]->[リンカー]、[入力]-> [追加の依存関係](VC ++ディレクトリではフルパスではなく.lib名のみを使用できます)にリストします。
  • ライブラリプロジェクトをアプリに追加します。ソリューション(ソリューションで、右クリック->[追加]->[既存のプロジェクト...])、[プロジェクト]-> [プロジェクトの依存関係...]を使用して、ライブラリプロジェクトを確認します(ドロップダウンでアプリケーションプロジェクトが選択されていることを確認してください)。両方のプロジェクトを編集している場合は、アプリをビルドする前にライブラリが変更された場合にVC ++がライブラリを再構築するため、これがおそらく最善の方法です。
  • VC ++のみを使用することが確実な場合は、

      #pragma comment(lib,"C:\\path\\to\\library.lib")`
    

    (@Nilsに感謝)

注意:ライブラリソリューションフォルダを「include」ディレクトリ内に置くのは非常に奇妙に思えます。これは実際には* .h(または他の#includedファイル)を対象としています。

于 2008-10-21T23:41:08.873 に答える
1

コマンドラインから:

cl /EHsc {objfiles}+ /link /LIBPATH:LibraryFolder Library.lib

{objfiles}+ は、1 つ以上のオブジェクトまたは cpp ファイルを意味します。

于 2008-10-22T04:37:09.447 に答える
0

ヘッダーファイルをインクルードした場合、VCは単にライブラリをリンクしません。

ライブラリを使用するようにリンカに指示する必要があります。正当な理由:あなたはすでにあなたのライブラリフォルダに何千ものライブラリを持っています。プログラムをリンクするたびにMSVCがそれらすべてを検索する必要がある場合、数百メガバイトのデータを処理する必要があります。

これにはかなり時間がかかるため、デフォルトでは実行されません。

VCの場合、ソース内のリンカーにヒントを与えることもできます。これを行うには、ソースコードのどこかに次の行を追加します(libのヘッダーが適切な場所である可能性があります)。

#pragma comment(lib,"c:\\path_to_library\\libname.lib")

これはプラットフォームに依存しないものではありませんが、MSVCを使用してlibをプロジェクトに自動的にリンクさせる最も便利な方法です。

もう1つの方法は、プロジェクト設定にリンカーを追加するだけです。関連情報は、プロジェクトのリンカー設定にあります。リリースおよびデバッグ構成にli​​bを追加することを忘れないでください。

于 2008-10-21T23:34:25.237 に答える