Использование GMP в Xcode 4 - проблемы со связыванием - PullRequest
3 голосов
/ 24 июня 2011

Я пытаюсь использовать библиотеки GMP 5.0.2 в демонстрационном проекте C ++ в Xcode 4.0.2, но у меня возникают проблемы с получением ссылок на работу.

Я посмотрел комментарии в посте StackOverflow: Добавление флагов компоновщика в Xcode , нашел библиотеку GMP и заголовочные файлы в / usr / local / lib и / usr / local / include иперетащил их к цели проекта.Это позволило проекту скомпилировать, но, видимо, не связать.Я получаю сообщение об ошибке:

    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;
}

Ответы [ 5 ]

2 голосов
/ 04 марта 2012

Чтобы запустить вашу программу с GMP, не забудьте добавить флаг -lgmp к компоновщику, например, так: (через Роб Кенигер ):

Щелкните правой кнопкой мыши цель вXcode Группы и файлы список и выберите Получить информацию из контекстного меню.На вкладке Build введите linker в поле поиска и найдите элемент Other Linker Flags .

Дважды щелкните элемент Другие флаги компоновщика и добавьте -lgmp.

1 голос
/ 10 июля 2013

Пара идей:

1) Как говорит nes, обязательно добавьте флаг -lgmp к вашему вызову компоновщика.2) Попробуйте включить "gmpxx.h" и добавить -lgmpxx -lgmp к компоновщику.(Порядок может быть важным!) Это не должно быть необходимо для простого кода C ... теоретически ... но для меня это больше похоже на ошибки C ++.3) Рассмотрим библиотеку MPIR.Это то же самое, что и GMP, но с более дружественным для Windows представлением о мире.4) Проверьте руководство - иногда есть другие включения, которые вам нужны для определенных функций.

0 голосов
/ 22 октября 2013

Если вам не нужны все функции GMP, вы можете просто перетащить файлы mini-gmp.h и mini-gmp.m в свой проект и начать использовать основные функции библиотеки.

0 голосов
/ 22 января 2012

вы должны сделать так:

  1. проект
  2. этапы сборки
  3. связать двоичный файл с библиотеками
  4. нажмите «+» и выберите свой собственныйБиблиотека gmp, например /opt/local/lib/libgmp.10.dylib (ps: я использую macport для выполнения GMP).
0 голосов
/ 24 июня 2011

Как была скомпилирована ваша библиотека GMP?Был ли он случайно скомпилирован для 32-битных архитектур?Если это так, вы не сможете использовать его в 64-битном проекте;вам нужно будет добавить -arch i386 в список флагов компилятора, чтобы XCode создал 32-битный исполняемый файл.

...