cvc4 mkconst из std::string в C++ API

Мне нужно изменить "123" в const в C++, что я закодировал как

ExprManager em;

Rational i = Rational("123",10);

Expr expri = em.mkConst(i);

или же

Integer i = Integer("123", 10);

Expr epri = em.mkConst(Rational(i,1));

но я получил ошибку

Неопределенные символы для архитектуры x86_64: "___gmpq_canonicalize", на которую ссылаются из: __gmp_expr <__ mpq_struct [1], __mpq_struct [1]>:: canonicalize () в ex1-4f9d4d.o "___gmpq_clear", на которую ссылаются из: __g_mp_pr_ex_pr_ex_pr_ex_exject_exject_exject_exject_exject_exject_exject_exject_exject_expert_1 __mpq_struct [1]>::~__gmp_expr() в ex1-4f9d4d.o "___gmpz_clear", на который ссылаются: __gmp_expr <__ mpz_struct [1], __mpz_struct [1]>::~__gmp_expr() в ex1-4f_d_d_d_d_d4 ", на который ссылаются: __gmp_expr <__ mpq_struct [1], __mpq_struct [1]>:: __ gmp_expr (__gmp_expr <__ mpz_struct [1], __mpz_struct [1]> const &, __gmp_expr <__ mpz_struct [1]] в struct> mp> __ in in in in in in in in in in in in in in in in in in | ex1-4f9d4d.o "___gmpz_init_set_si", на который ссылаются: __gmp_expr <__ mpz_struct [1], __mpz_struct [1]>:: init_si (long) в ex1-4f9d4d.o ld: символ (ы) не найден для архитектуры x86_64

1 ответ

Решение

Проблема выше вызвана отсутствием библиотеки GMP. Установленный GMP с "brew install gmp" на Mac. скомпилировать программу с флагом "-lgmp"

Задача решена.

Другие вопросы по тегам