5

以下を実行しようとしています:

        #include<iostream>
        #include<boost/filesystem/operations.hpp>

        namespace bfs=boost::filesystem;
        int main()
        {
        bfs::path p("second.cpp");
        if(bfs::exists(p))
        std::cout<<p.leaf()<<std::endl;
        }

cygwin でいくつかのエラーが発生したので、netbeans を試すことにし、以下をガイドとして使用しました。hereProject -> properties -> Linker ->Libraries -> Add option -> Other -> -lfile_systemに記載されているように、ファイルシステムのすべてのリンクと以下を追加しました。を使用して別のテストを実行したので、現在、ブーストが正しくインストールされていないことを疑っていません。#include<boost/any.hpp>

それが「file_system」であることは私には奇妙に思えるので、「filesystem」も試しましたが、役に立ちませんでした。

ネットビーンズを押したままCtrlクリックすると、ファイルが表示されるので、問題ないように見えます(内部で適切にリンクされているため、見たいものを「見る」ことができます)。#include<boost/filesystem/operations.hpp>operations.hpp


ブーストをインストールするための解決策は、次の形式で提供されました。1 - Visual Studio で使用されているパス変数がある場合は、インストール中に変数を一時的に変更する必要があります。これは良いガイドです。ここまでできたら、これで1ステップ完了です。

2 - MinGW をダウンロードしてインストールします。これは非常に簡単なプロセスで、インストーラー ファイルはここにあります

これらの作業が完了すると (私と同じ状況にある場合)、boost を適切にインストールできるようになります。

ホライ!

4

3 に答える 3

8

Boost を cygwin で段階的に使用する

新しいプロジェクトを作成する

ここに画像の説明を入力

このチュートリアルで指定されている名前を正確に使用することをお勧めします。後で尋ねる: 機能しない場合は、見つけやすくなります。

T:\もちろん、すべてをあなたのドライブに交換しなければならないことに言及する必要はないと思います。

プロジェクト名 :Boost-cyg-Test

ここに画像の説明を入力

プロジェクトは次のようになります

ここに画像の説明を入力

main.cpp を開く
生成されたコードを次のように上書きします。まず第一に、すべてがエラーなしで機能することを望んでいます。

したがって、独自の特殊なコードは使用しないでください。
欠点を見つけるのは難しい。次に、いくつかの質問の後、取得するように言われました:
私は自分のコードを使用しました

#include <iostream>
#include <boost/filesystem.hpp>
using namespace std;
using namespace boost::filesystem;

int main()
  {
    path p("second.cpp");
      if (exists(p)) { std::cout<<p.leaf()<<std::endl; }
  }

このセクションでは、"boost" が既にコンパイルされていることを前提としています。

[ツール] -> [オプション] に移動

C++ コード支援オプションは次のようになります。

ここに画像の説明を入力

そうでない場合は、Netbeans に作成させる必要があります。

ここに画像の説明を入力

新しいツール コレクションを追加

ここに画像の説明を入力

[OK] をクリックしてこのダイアログを完了すると、上記の設定が表示されます。(C++ コード支援オプション)。

すべてのライブラリを適切な場所にコピーします

新しいフォルダ「boost」を作成しましょう。

ここに画像の説明を入力

検索ツールを使用して、コンパイル済みの Boost フォルダーを検索し、*.a
My Boostis compilation withshared optionを検索します。

ここに画像の説明を入力

私たちの短いアプリの場合。必要なファイルは 2 つだけです。

libboost_filesystem-gcc45-mt-d-1_53.dll.a
libboost_system-gcc45-mt-d-1_53.dll.a

しかし、2 つのファイルをコピーする場合は、すべてのファイルをコピーできます。
見つかったすべての.aファイルにマークを付けて、作成したばかりのディレクトリにコピーします
T:\cygwin\lib\boost

ここで、.dllファイルに対して同じことを行います。
すべてのファイルをマークして、ディレクトリ.dllにコピーします?:\cygwin\bin
静的ライブラリのみをコンパイルした場合は、この時点をスキップできます。

ここに画像の説明を入力

ここで、プロジェクト設定を変更します。
ご覧のとおり、ソース Boost フォルダーを cygwin に入れました。

ここに画像の説明を入力

ここに画像の説明を入力

上ですでに述べたように、2 つの.aファイルが必要です。
[ライブラリの追加] でナビゲートしT:\cygwin\lib\boostて選択します

libboost_filesystem-gcc45-mt-d-1_53.dll.a
libboost_system-gcc45-mt-d-1_53.dll.a

ここで、この名前が netbeans によって次のように短縮されたことに気付くでしょう。

boost_filesystem-gcc45-mt-d-1_53.dll
boost_system-gcc45-mt-d-1_53.dll

ここに画像の説明を入力

これは少し混乱します。あたかも.dllここにaが立っているように見えます。しかし、それは実際には.aファイルです。

main.cpp にブレークポイントを設定します。デバッグを開始します。

ここに画像の説明を入力

重要な部分である 2 つのライブラリに矢印を付けました。
すべてのライブラリが検出され、make が終了した後、ブレークポイントで停止します。

出力:

ここに画像の説明を入力

Cygwin のビルド ブースト

共有ライブラリ自体でブーストを作成したいすべての人向け。

boost_1_53_0.zip をダウンロード

?:\cygwin ディレクトリにフォルダーを作成します。
boost_1_53_0

ここに画像の説明を入力

zip ファイルをそのディレクトリに解凍します。
次のようになります。

ここに画像の説明を入力

コマンド ウィンドウを開き、cd でboost_1_53_0ディレクトリに移動します。クリーンなビルドを行うには、と
のみを含む PATH が必要です。 cmd タイプで。cygwin homebin

SET PATH=T:\cygwin;T:\cygwin\bin 

そしてパスをテストします。

PATH

ここに画像の説明を入力

タイプ

bootstrap.bat

ここに画像の説明を入力

タイプ

.\b2 --build-dir=T:\boost-cyg toolset=gcc variant=debug link=shared runtime-link=shared

しばらくすると、ビルドが完了します。
これで、チュートリアルで使用したのと同じ環境ができました。

エラーが発生した場合: フォルダーにgcc not found
コピー (名前を変更しないで?:\cygwin\binください)。たとえば、(名前が異なる場合があります)。
i686-pc-cygwin-gcc-4.5.3.exegcc.exe

i686-pc-cygwin-g++-4.exeg++.exe

お役に立てば幸いです。

于 2013-04-28T14:40:48.450 に答える
0

コンパイル時に発生するエラーを貼り付けていただけますか? 私は Windows 環境でプログラムをコンパイルするのに慣れていませんが、Jesse Good がコメントで提案したように、リンカ エラーがあると思います。

-lboost_filesystemの代わりに を使用して解決できlfile_systemます。

ライブラリがどのように呼び出されるかを調べるには、ライブラリの名前を取得し (私の UNIX 環境では libboost_filesystem.so があります)、「lib」プレフィックスと「.so」または「.a」サフィックスを取り除きます (異なる必要があります)。 Windows 環境で)。

于 2013-05-03T09:43:07.507 に答える