C ++에서 boost multiprecision 라이브러리를 사용하려고하는데 gmp_int 유형에 문제가 발생했습니다. 부스트 라이브러리를 얻는 모든 목적은 임의의 큰 정수로 산술을 수행하는 것이기 때문에 모든 것이 작동하는지 확인하기 위해 다음 코드를 만들었습니다.
#include <iostream>
#include <boost/multiprecision/gmp.hpp>
using namespace std;
namespace mp=boost::multiprecision;
int main()
{
mp::gmp_int n;
cin>>n; //Here's the
n=n*2 //problem (at least according to Xcode 5).
cout<<n<<"\n";
return 0;
}
하지만 위에서 표시 한 줄에 "유효하지 않은 피연산자"오류가 발생합니다. 누구든지 이것에 대한 해결책을 찾을 수 있고-더 중요한 것은-처음부터 무엇이 잘못되었는지 설명 할 수 있다면 대단히 감사 할 것입니다.
[편집하다]
sehe의 대답은 첫 번째 문제를 해결하고 새로운 문제를 만든 것 같습니다. 이제 나는 이것을 얻고있다 :
아키텍처 x86_64에 대한 정의되지 않은 기호 : "___gmp_get_memory_functions", 참조 : boost :: multiprecision :: backends :: gmp_int :: str (long, unsigned int) const in main.o "___gmpz_clear", 참조 : boost :: multiprecision :: backends :: gmp_int :: ~ gmp_int () in main.o "___gmpz_get_str", 참조 : boost :: multiprecision :: backends :: gmp_int :: str (long, unsigned int) const in main.o "___gmpz_init", 참조 됨 from : boost :: multiprecision :: backends :: gmp_int :: operator = (char const *) in main.o boost :: multiprecision :: backends :: gmp_int :: gmp_int () in main.o "___gmpz_mul_ui", 참조 된 : boost :: multiprecision :: backends :: eval_multiply (boost :: multiprecision :: backends :: gmp_int &, boost :: multiprecision :: backends :: gmp_int const &, long) in main.o "___gmpz_neg", 다음에서 참조 : boost : :multiprecision :: backends :: eval_multiply (boost :: multiprecision :: backends :: gmp_int &, boost :: multiprecision :: backends :: gmp_int const &, long) in main.o "___gmpz_set_str", 다음에서 참조 : boost :: multiprecision :: backends :: gmp_int :: operator = (char const *) in main.o "___gmpz_set_ui", 참조 : boost :: multiprecision :: backends :: gmp_int :: operator = (char const *) in main.o ld : symbol (s) 아키텍처 x86_64 clang에 대해 찾을 수 없음 : 오류 : 링커 명령이 종료 코드 1로 실패했습니다 (호출을 보려면 -v 사용).multiprecision :: backends :: gmp_int :: operator = (char const *) 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)multiprecision :: backends :: gmp_int :: operator = (char const *) 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)
[/편집하다]
gmp_int
백엔드 유형입니다.
number<gmp_int>
일반 산술 유형으로 적용하는 데 사용 합니다. 이 경우 mpz_int
이미 해당 유형입니다.
#include <boost/multiprecision/gmp.hpp>
#include <iostream>
namespace mp = boost::multiprecision;
int main() {
mp::mpz_int n;
std::cin >> n;
n = n*2;
std::cout << n << "\n";
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다