1

私は自分の C++ プログラムで動作するようにいくつかのサードパーティ ライブラリを取得することで完全に車輪を回転させています。ライブラリを実装する際に必要な一般的な手順について、一般的なアドバイス (40,000 フィート レベル) を探しています。

まず、いくつかの詳細: Windows で code::blocks を IDE として使用しています。私はこの IDE が好きで、必要がなければ他のものに切り替えたくありません (Visual C++ と Linux のいくつかを試しました)。私が使用しようとしているライブラリは、GMP と crypto++ です。

わかった。私が知っていると思うことは次のとおりです。ライブラリをダウンロードした後、ファイルをフォルダーに解凍します。私は C:\ に直接解凍し、各 zip ファイルを独自のフォルダー (例: c:\cryptopp および c:\gmp) に抽出しました。次のステップはライブラリを構築することだと思いますが、ここで完全に行き詰まります。これはどのように行われますか?抽出されたファイルの中に実行ファイルはありません。私が知る限り、これは code::blocks で行っていると思いますが、方法がわかりません。

最後に、.lib ファイルを作成すると思われるこれを実行できると仮定すると、実際にコードでライブラリを使用する前の最後のステップは、ライブラリにリンクすることです。この部分、私は理解していると信じています。

ですから、私の質問は幅広く、このプロセスを全体的に理解していますか? もしそうなら、これらのライブラリを構築するにはどうすればよいですか。実際にそれが欠けているのであれば。

私の無知を甘やかしてくれて本当にありがとう。私は今、完全に無頓着で、何時間も Google を検索しているにもかかわらず、何の進歩もありません。また、私が事実として述べたことは、正しくないことを自由に修正してください。どうもありがとう!

4

2 に答える 2

1

通常、ライブラリにはmakefileと呼ばれる特別なファイルがあり、Make(またはそのバリエーションの1つ、ウィンドウで機能するものは何でも)と呼ばれるユーティリティを使用して構築されます。通常、あなたがしなければならないのは、ソースファイルを解凍したディレクトリでMakeを実行することだけで、残りはそれ自体で実行されます。

于 2012-07-03T05:56:44.273 に答える
1

あなたが言及したこれらのライブラリ (GMP と crypto++; 免責事項: どちらにも詳しくありません) に code::blocks のプロジェクト ファイルがない場合でも、Windows で MinGW を使用してコンパイルできる場合があります。

MinGW をインストールしている場合は、MinGW シェルを使用して適切なディレクトリに移動し/c/cryptopp/ます/c/gmp。例では - MinGW シェルは Unix シェルのように機能し、さまざまな命名規則があります。

次に、ライブラリをコンパイルする必要があります。これらのディレクトリに Makefile があるかどうかを確認します。ない場合はconfigure、Makefile を生成するスクリプトがあるかどうかを確認できます。Makefile がある場合makeは、GCC コンパイラの MinGW のポートを使用してライブラリをコンパイルするものを入力できます。

libcryptopp.aコンパイルが完了すると、プロジェクトにリンクできる.a ファイル (たとえば ) の形式のライブラリが作成されます。code::blocks では、リンカー パス ( -LGCC のコマンド ライン オプション) をC:\cryptopp\binライブラリがコンパイルされた場所に設定し、リンクするライブラリのリストに追加します (これはGCClibcryptopp.aのオプションに関連付けられています)。 -l. 規則では、lib プレフィックスと .a 拡張子を除外するcryptoppため、ライブラリ リストに追加するだけです。最終的に、リンカー オプションは次のよう-LC:\cryptopp\bin -lcryptoppになります。

また、ライブラリを使用できるようにするには、ヘッダー ディレクトリへのパスをプロジェクトのインクルード パスに追加する必要があります。これは GCC のコマンド ライン オプションに関連付けられている-Iため、コンパイラのコマンド ライン オプションには次のようなものがあります-IC:\cryptopp\include

もちろん、上記のすべては、GCC で code::blocks を使用することを前提としています。VisualC++ で使用している場合、原則は同じですが、具体的な手順が異なります。

于 2012-07-03T06:21:52.093 に答える