3

Xcode 4.0.2 のデモ C++ プロジェクトで GMP 5.0.2 ライブラリを使用しようとしていますが、リンクを機能させるのに問題があります。

私は StackOverflow の投稿のコメントを見て: Xcodeにリンカー フラグを追加すると、/usr/local/lib と /usr/local/include で GMP ライブラリとヘッダー ファイルが見つかり、それらをプロジェクト ターゲットにドラッグしました。これにより、プロジェクトはコンパイルできましたが、明らかにリンクできませんでした。私が得ているエラーは

    Undefined symbols for architecture x86_64:
  "operator>>(std::istream&, __mpz_struct*)", referenced from:
      _main in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

次に何を試すべきかについての提案はありますか?ありがとう。

#include <iostream>
#include "gmp.h"
#include <stdio.h>

using namespace std;

int main (int argc, const char * argv[])
{

    mpz_t x;
    mpz_init(x);
    cin >> x;
    cout << "x = " << endl;

    // insert code here...
    std::cout << "Hello, World!\n";
    return 0;
}
4

5 に答える 5

2

プログラムを GMP で実行する-lgmpには、リンカーに次のようにフラグを追加することを忘れないでください: ( Rob Keniger経由):

[Xcodeグループとファイル]リストで ターゲットを右クリックし、コンテキスト メニューから[情報を見る] を選択します。[ビルド] タブでlinker、検索フィールドに入力し、 [その他のリンカー フラグ]項目を見つけます。

Other Linker Flags項目を ダブルクリックして追加し-lgmpます。

于 2012-03-03T22:34:56.527 に答える
0

あなたはこのようにする必要があります:

  1. 事業
  2. ビルドフェーズ
  3. バイナリとライブラリをリンクする
  4. 「+」をクリックして、/opt/local/lib/libgmp.10.dylib などの独自の gmp ライブラリを選択します (ps: macport を使用して GMP に準拠しています)。
于 2012-01-22T15:45:50.120 に答える
0

GMP ライブラリはどのようにコンパイルされましたか? たまたま 32 ビット アーキテクチャ用にコンパイルされたのでしょうか。その場合、64 ビット プロジェクトでは使用できません。-arch i386XCode で 32 ビットの実行可能ファイルを作成するには、コンパイラ フラグのリストに追加する必要があります。

于 2011-06-24T10:30:30.300 に答える
-1

GMP のすべての機能が必要ない場合は、mini-gmp.hおよびmini-gmp.mファイルをプロジェクトにドラッグ アンド ドロップするだけで、ライブラリの基本機能を使い始めることができます。

于 2013-10-22T16:29:22.400 に答える