Linuxでやれば簡単なのに!(挨拶)
Visual Studio 2008でGMPを使う方法を書いておく.備忘録.環境はWindows XP Pro SP3に,Visual Studio 2008 Proです.基本方針はこれを参考にしてます.手順内に出てくるリンク切れの参考サイトはこっち.
- なにはなくとも,GMP本体をダウンロードする.2009年4月28日時点では4.3.0が最新のようだが,ビルドに必要なファイルが4.2.4を前提にしているらしいので,4.2.4をダウンロード(直リン注意!)する.なお,4.3.0に4.2.4用のビルドファイルを適用してみたが,ダメだった.どこをどう直せばいいのか,皆目見当もつかないくらいにエラーが出たので,今後の課題に.
- ダウンロードしたgmp-4.2.4.tar.gzを展開する.ここでは,c:\gmpとする.
- このサイトで提供しているgmp-4.2.4.vc9.zipをダウンロードして,解凍する.解凍したファイルをc:\gmpに上書きする.
- C:\gmp\build.vc9\yasm.rulesをC:\Program Files\Microsoft Visual Studio 9\VC\VCProjectDefaultsにコピーする.
- YASMから,適切なバイナリ(例えば,yasm-0.8.0-win32.exe)をダウンロードし,yasm.exeにリネームして,C:\Program Files\Microsoft Visual Studio 9\VC\binにコピーする.
- C:\gmp\build.vc9\gmp.slnを開くと,エラーが4回くらい出るので,無視します.これは,異なるプラットフォームだからだそうですが,Core2でコンパイルしたいなぁ・・・.何故かエラーになる.どうやるんだろう?OSが64ビットじゃないから?
- gen-bases, gen-fac_ui, gen-fib, gen-psqrの4つをビルドしまくる.
- dll_gmp_p4とlib_gmp_p4をビルドる.
- lib_gmpxxをビルドる.
- c:\gmp\build.vc9\dll\Win32\(Debug|Release)\にdllファイルが,c:\gmp\build.vc9\lib\Win32\(Debug|Release)\にlibファイルができます.
- c:\gmpにあるヘッダファイルをC:\Program Files\Microsoft Visual Studio 9\VC\includeに,ビルドされたlibファイルをC:\Program Files\Microsoft Visual Studio 9\VC\libにコピー.
これでok.続いて,GMPを用いたコードをテストします.以下のコードをコンパイルすることを考えましょう.
#include<iostream>
#include<gmpxx.h>
using namespace std;
mpz_class factorial(int val){
mpz_class result = 1;
for(int i=1; i<=val; i++) result *= i;
return result;
}
int main(void){
mpz_class result = factorial(300);
cout << result.get_str() << endl;
return 0;
}
Windows 環境下での GMP の利用法
結果は,こんな感じ.
あーさむ.ただし,何故かコンパイル時にエラーが出ることがある.その場合は,静的リンクを設定してみて下さい.
関連:
Windows 環境下での GMP の利用法
A Native GMP Port Using Microsoft Visual Studio