web-dev-qa-db-ja.com

VC ++でコンパイルするための外部ライブラリをどのように追加しますか?

いくつかのVisualC++コンパイラ(VC97、VC2005、VC2008)を使用しましたが、ビルドに外部ライブラリを追加する明確な方法を実際には見つけていません。私はJavaバックグラウンドから来ており、Javaライブラリはすべてです!

Linuxボックスでのオープンソースプロジェクトのコンパイルから、これらの.soファイルを除いて、ライブラリのすべてのソースコードを含める必要があるようだと理解しています。

また、.lib静的ライブラリと.dll動的ライブラリについて聞いたことがありますが、それらをビルドに追加して機能させる方法がまだ完全にはわかりません。これをどうやってやるの?

13
leeand00

IDEでプロジェクト/ソリューションにlibを追加する方法の仕組みを尋ねていると思います...

2003年、2005年、2008年には、次のようになります。

ソリューションエクスプローラーから-プロジェクトを右クリックしてプロパティを選択します(通常は最後のプロパティ)。通常、上部にあるすべての構成を選択します...リンカー入力

追加の依存関係がそこに入ります

このためのスクリーンキャプチャができたらいいのにと思います。

VC6では、これはすべてメモリからのものであるため、私とは別のクマです

プロジェクトの設定またはプロパティを選択し、リンカータブに移動して、ライブラリを追加できる場所を見つけます。

この投稿の無計画な性質を許してください。私はそれがあなたが望むものだと思います。

7
Tim

C++のライブラリも役立つと考えられていますが、それらを統合する方法はJavaとは異なります。これは、コンパイラがライブラリのinterfaceを確認するだけでよいためです。ヘッダーファイルで宣言されます。Javaでは、Javaは、外部から見えるヘッダーファイルと、実装を提供する生成されたオブジェクトコードとの間にこの区別がないため、コンパイラは実際のライブラリを検査する必要があります。

通常は、ライブラリを個別に1回ビルドし、生成されたlib/dllファイルとヘッダーファイルを、ライブラリを必要とするプロジェクトがアクセスできる場所に配置します。一般的なイディオムは、ヘッダーファイルをincludeに、静的ライブラリをlibに、動的ライブラリをbinに、コンパイル済みライブラリのサブディレクトリに配置することです。

ほとんどのC++ライブラリがプリコンパイルされた形式ではなくソースコード形式で提供されていることがわかった理由は、すべてのC++コンパイラには、シンボル名などをマングルする方法に関して一定の自由があり、結果のオブジェクトコードはコンパイラ間で移植できないためです。単独のオペレーティングシステム。したがって、コンパイルされたコードを出荷することは、多くのアプリケーションにとって意味がありません。 Windows上のクローズドソースC++ライブラリで見つかることがあります(Cライブラリはまったく別の問題です)が、ベンダーはビルドタイプ(リリース、デバッグ、32ビット、64)ごとにコンパイルされたバージョンを提供する必要がありますビットなど)およびターゲットコンパイラ(さまざまなバージョンのVisual Studioには異なるバイナリが必要です。その後、Borlandと他のコンパイラが多数あります)、サポートするのはすぐに悪夢になります...

ライブラリを取得してWindowsでダイナミックライブラリ(つまり、DLL)としてビルドすると、コンパイラ/リンカは通常、そのライブラリの静的な「インポート」ライブラリを生成します(同じ名前で、拡張子は.libだけです)。プロジェクトをダイナミックライブラリにリンクするときは、.libファイルをライブラリの依存関係として指定します。アプリケーションを上記のインポートライブラリにリンクすると、リンカーは.dllファイルへの依存関係と、ライブラリが提供することを期待する必要のあるシンボルを記録できます。

それらを機能させるには(プログラムがWindowsでそれらを見つけるという意味で)、通常、.dllファイルが実行可能ファイルと同じディレクトリにあるか、「PATH」環境変数およびVisual C++で同等のものを介してアクセスできる必要があります。

15
Timo Geusch

OK。通常、ダイナミックライブラリを手動でロードする必要はありませんが、ロードする場合は、LoadLibraryを調べてください。次に、他の関数を呼び出して、関数ポインタアドレスなどを取得する必要があります。通常、それがどのように機能するかは、.dllファイルにも.libファイルが含まれているため、必要なときに自動的にロードされます。

.libファイル/ staticライブラリの指定方法は、Properties/Linker/Input-> Additional Dependenciesにあります。 GUIで。

これをスクリプト化している場合..まあ。リンク時にコマンドラインで.libファイルを指定するだけです。

8
Dan

ライブラリを追加する場合、これは非常に簡単です(それが意味する場合)プロジェクト->プロパティ->プロパティの構成->リンカー->入力->追加のライブラリ。そこにあるライブラリの1つに立ち、Enterキーを押します。ライブラリを追加するためにスペースを解放しました、たとえばパイ:)

4
user893764

VC++プロジェクトに外部ライブラリまたはライブラリディレクトリを追加するには、次の手順に従います。
1-プロジェクトのプロパティに移動します(ソリューションのプロジェクトを右クリックして実行できます)
2- [リンカー]> [一般]> [追加のライブラリディレクトリ]を選択します
3-「追加ライブラリディレクトリ」の前の空のバーをクリックすると、VSにより、必要なライブラリを検索するデフォルトディレクトリにディレクトリを追加できます。

2
Mostafa Man

「それらをビルドに追加する」とはどういう意味ですか?

VCでは、ソリューション内で、出力がライブラリー(静的または動的)であるプロジェクトと、その出力に依存してそれを使用する別のプロジェクト(つまり、リンクへのリンク)を持つことができます。

私たちのコードベースでは、通常、ライブラリまたはライブラリのセットごとに個別のソリューションがあり、それらをターゲットプロジェクトにリンクします。ターゲットプロジェクトのほとんどはマネージアセンブリです。アンマネージ機能を必要とするプロジェクトは、通常、マネージC++またはC++/CLIで記述され、アンマネージ静的ライブラリにリンクされます。管理されていないライブラリの変更が最も少ないため、これが保守が最も簡単であることがわかりました。

1
plinth