Visual Studio 2008でGMPを使う方法

|
Clip to Evernote Visual Studio 2008でGMPを使う方法

Linuxでやれば簡単なのに!(挨拶)

Visual Studio 2008でGMPを使う方法を書いておく.備忘録.環境はWindows XP Pro SP3に,Visual Studio 2008 Proです.基本方針はこれを参考にしてます.手順内に出てくるリンク切れの参考サイトはこっち

  1. なにはなくとも,GMP本体をダウンロードする.2009年4月28日時点では4.3.0が最新のようだが,ビルドに必要なファイルが4.2.4を前提にしているらしいので,4.2.4をダウンロード(直リン注意!)する.なお,4.3.0に4.2.4用のビルドファイルを適用してみたが,ダメだった.どこをどう直せばいいのか,皆目見当もつかないくらいにエラーが出たので,今後の課題に.
  2. ダウンロードしたgmp-4.2.4.tar.gzを展開する.ここでは,c:\gmpとする.
  3. このサイトで提供しているgmp-4.2.4.vc9.zipをダウンロードして,解凍する.解凍したファイルをc:\gmpに上書きする.
  4. C:\gmp\build.vc9\yasm.rulesをC:\Program Files\Microsoft Visual Studio 9\VC\VCProjectDefaultsにコピーする.
  5. YASMから,適切なバイナリ(例えば,yasm-0.8.0-win32.exe)をダウンロードし,yasm.exeにリネームして,C:\Program Files\Microsoft Visual Studio 9\VC\binにコピーする.
  6. C:\gmp\build.vc9\gmp.slnを開くと,エラーが4回くらい出るので,無視します.これは,異なるプラットフォームだからだそうですが,Core2でコンパイルしたいなぁ・・・.何故かエラーになる.どうやるんだろう?OSが64ビットじゃないから?
  7. gen-bases, gen-fac_ui, gen-fib, gen-psqrの4つをビルドしまくる.
  8. dll_gmp_p4とlib_gmp_p4をビルドる.
  9. lib_gmpxxをビルドる.
  10. c:\gmp\build.vc9\dll\Win32\(Debug|Release)\にdllファイルが,c:\gmp\build.vc9\lib\Win32\(Debug|Release)\にlibファイルができます.
  11. 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 の利用法

結果は,こんな感じ.

090428_gmp01.png

あーさむ.ただし,何故かコンパイル時にエラーが出ることがある.その場合は,静的リンクを設定してみて下さい.

関連:
Windows 環境下での GMP の利用法
A Native GMP Port Using Microsoft Visual Studio

プロフィール

e-m@il @ddress