1

Xcode での Boost Program Options へのリンクは、動作させることができなかったため、断念しました。ヘッダーを認識させる方法はわかりましたが、Xcode でリンクするライブラリへのパスを設定する方法についてはよくわかりません。

昨年大学で Boost と Eclipse を使用したので、このプロジェクトで Eclipse を使用するだけなら、もう少し簡単に整理できると思いました。私のプログラムは、彼らが提供する例 (first.cpp) によく似ています。ソースを見る必要がある場合は、githubにロードしています。

心配しないでください。Boost は /usr/local/boost にインストールされています。

new-host-2:$ ls | grep program_options
libboost_program_options.a
libboost_program_options.dylib
new-host-2:$ pwd
/usr/local/boost_1_49_0/stage/lib

[プロジェクト] > [プロパティ] > [C/C++ 一般] > [パスとシンボル] の下にある次の方法で、Boost 用にプロジェクト設定を構成しました: インクルード: /usr/local/boost_1_49_0/ライブラリ

Eclipse コンソールに基づいて、この出力が最後に表示されるので、適切にリンクされていると思われます。

Building target: FizzBuzz
Invoking: Cross G++ Linker
g++ -L/usr/local/boost_1_49_0/stage/lib -o "FizzBuzz"  ./Fizzbuzz.o ./main.o -lboost_program_options
Finished building target: FizzBuzz


**** Build Finished ****

しかし、プログラムを実行しようとすると、「起動できません」というダイアログ ボックスが表示されます。

コマンドラインから実行してみましたが、うまくいきませんでした:

new-host-2:$ ./FizzBuzz 
dyld: Library not loaded: libboost_program_options.dylib
  Referenced from: /Users/per001/Documents/workspace/FizzBuzz/Debug/./FizzBuzz
  Reason: image not found
Trace/BPT trap: 5

これを Eclipse で適切にリンクするように設定するにはどうすればよいですか? それとも、Xcode?

4

4 に答える 4

3

指定されたgithubリポジトリからコードをリンクして実行することができました。

私は少し違ったやり方で進んだので、それは少しのプロセスでした。

まず、次のようにMacBoostに再インストールしました。

  1. ここから最新のmacportをインストールしました。

  2. 次に、xcode 4.3を使用しているため、最新のコマンドラインツールをインストールしました。コマンドラインツールは、ここからデフォルトで出荷されなくなりました。

  3. その後、次のようにブーストをインストールしました。

    sudo port install boost

    Xcodeが以前とは異なる場所にあるため、ここでいくつかの問題が発生しました。これを修正するには、次のコマンドを実行する必要がありました。

    sudo xcode-select -switch /Applications/Xcode.app

    これが仕事をしたことを確認するために、私は以下を実行しました:

    xcode-select -print-path

    期待される結果が得られた場所:/Applications/Xcode.app

    この後、ファイルの場所は次のようになります。

    macpro:local ervinbosenbacher$ locate libboost_program_options.a
    /opt/local/lib/libboost_program_options.a
    
    macpro:local ervinbosenbacher$ locate program_options
    /opt/local/include/boost/program_options
    /opt/local/include/boost/program_options/cmdline.hpp
    /opt/local/include/boost/program_options/config.hpp
    /opt/local/include/boost/program_options/detail
    ...
    
  4. これに続いて、XCodeを起動し、新しいプロジェクトを作成して、プロジェクトにコードファイルを含めました。

  5. 次のように設定を変更しました。

    Build Settings->All->Search Paths->Always Search User Paths: Yes.
    
    Build Settings->All->Search Paths->Library Search Paths->Debug->Any Architecture|Any SDK:/opt/local/lib
    Build Settings->All->Search Paths->Library Search Paths->Release->Any Architecture|Any SDK:/opt/local/lib
    
    Build Settings->All->Search Paths->User Header Search Paths->Debug->Any Architecture|Any SDK:/opt/local/include
    Build Settings->All->Search Paths->User Header Search Paths->Release->Any Architecture|Any SDK:/opt/local/include
    
    Build Settings->All->Linking->Other Linking Flags->Debug->Any Architecture|Any SDK: -lboost_program_options
    Build Settings->All->Linking->Other Linking Flags->Release->Any Architecture|Any SDK: -lboost_program_options

次に、Xcodeからアプリを正常にビルドして実行しました。

Allowed options:
        --help                produce help message
        --begnum arg          set beginning number
        --endnum arg          set ending number
        --fizznum arg         set fizznum (default: 3)
        --buzznum arg         set buzznum (default: 5)
        --fizzword arg        set fizzword (default "Fizz"
        --buzzword arg        set buzzword (default "Buzz"
于 2012-05-05T16:00:31.367 に答える
0

シェルからプレーンな g++ を使用して、Linux で Boost プログラム オプションをリンクする方法を次に示します。

g++ -static main.cpp -o program \
-I/usr/local/include/boost/ \
/usr/local/lib/libboost_program_options-s.a

そして、cpp ソース コードには、次のものが含まれています。

#include <boost/program_options.hpp>

Xcode で Eclipse へのパスを追加する方法がわかりませんが、シェルから単純な g++ を試して、それが正しくコンパイルおよびリンクされているかどうかを確認してから、そこから移動することができます。

于 2012-04-26T00:35:50.400 に答える
0

install_name_tool: を使用して dyn lib へのパスを調整します
$ otool -L /path/to/your/binary(共有ライブラリ dep を一覧表示します)
$ install_name_tool -change libboost_foo.dylib /path/to/boost/stage/lib/libboost_foo.dylib /path/to/your/binary(dyn lib の場所を変更します)
$ otool -L /path/to/your/binary
$ /path/to/your/binary

于 2012-05-07T23:38:54.900 に答える
0

試しましたか

export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/usr/local/boost_1_49_0/stage/lib

同じ端末内でEclipseを起動する前に、バグが修正されているかどうかを確認してください。

ブノワ。

于 2012-05-08T13:08:21.270 に答える