mpz_importメソッドを使用して 64 ビット整数を gmp にロードしたいのですが、数値を文字列にストリーミングしてから割り当て演算子を使用することでこれを達成できることはわかっていますが、これは確かに遅く、最適ではありません。
このコードは、OSX を実行している 64 ビット MacBook では正常に動作しますが、Raspbian、32 ビット Ubuntu サーバー、および 64 ビット Linux Mint を実行しているラズベリー パイではセグメンテーション エラーで失敗し、すべて mpz_import 行で失敗します。
これがgcc 4.7でコンパイルされたコードですg++ -std=c++11 -lgmp -lgmpxx main.cpp
#include <iostream>
#include <cstdint>
#include <gmp.h>
#include <gmpxx.h>
using namespace std;
int main()
{
mpz_t a;
int64_t b = 4;
mpz_import(a, 1, 1, sizeof(b), 0, 0, &b); //segfault on this line
mpz_class c(a);
cout << c << endl;
}