Fortranプログラミングの続き
引越しを終えて、新たにPCを購入した。ということで、以前練習しておいたFortran開発環境を実際に構築してみたので、再度やり方をまとめておく。
まずはVisual C++ Express EditionとPlatform SDKのインストールから。
Visual C++のインストールは問題なかったが、Platform SDKのインストールがどうもうまくできていない模様。以前と同じやり方なのになぁ。。。
そうそう、以前は英語の解説ページしかなかったが、日本語に訳されたページが公開されていたので、改めて紹介する。
http://www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/
環境変数はきちんと追加したのに、VC++でWin32アプリをビルドするとincludeファイルがみつからないというエラーが出たが、下記の"ノート"を追加で行ってようやく成功
ノート:
代わりに、Visual C++ Express Edition がインストールされているフォルダのサブフォルダにある \vc\vcpackages に存在するVCProjectEngine.dll.express.config ファイルを修正することで、Visual C++ フォルダの更新を行うことも可能です。ただし、Visual C++ Express Edition を再度立ち上げる前に、「%USERPROFILE%\Local Settings\Application Data\Microsoft\VCExpress\8.0」 において "vccomponents.dat" が存在する場合は、その削除を行うことも忘れずに行ってください。
具体的な修正方法が掲載されていないけど、10行目と12行目のIncludeとLibにそれぞれ
を追加したら成功した。
Intelコンパイラをこの後インストールして、例によってifortvars.batとifort.cfgを編集。サンプルコードディレクトリにあるint_sin.f90がコンパイル、実行できればオーケー。
結構面倒な作業ではあるのだが。。。VF9.1でVC++2005に正式対応するとの情報も入っている(VFのユーザーズフォーラム)から、これが出たらもう少しインストールは楽になるのかな。
追記だが、Platform SDKのインストールの際、カスタムインストールでは環境変数への登録がオフになっていることがわかる。どうも、他の環境変数との衝突を避けるためと書いてあったが、今回は強引に登録することにしてみた。その結果、path, lib, includeのほかにいくつかの環境変数が登録されていたのと、システム環境変数とユーザー環境変数の両方にpath, lib, includeが追加されていた。2重登録でも問題はないだろうが、気持ち悪いので、ユーザー環境変数に登録されたPlatform SDK関連のものは削除したことをメモしておく。
環境が整ったところで、簡単な1次元衝撃波管問題のコードをコンパイル。
VC++からのプロジェクトには対応していないため、nmakeコマンドによってコンパイルを行う。
Makefileの記述の仕方はUNIXとほぼ同じで問題ないようだが、コンパイルオプションだけは注意が必要。
倍精度のオプションは-r8ではなくて/4R8。(integerの場合はr(R)をi(I)に読み替え)。
ターゲットの実行ファイルには拡張子exeをつける必要がある。
これでコンパイルができ、見事実行された。結果も問題なし。
こんなところだろうか。後はこれからもう少し複雑なものを試して、様子を見ていくことにする。
昨日の続き。
気分一新。再チャレンジ。まずはVC++のインストール。とりあえず、この状態でVCを起動して見ると、画面上にPSDKに関する記述があるので、開いてみる。
何と、PSDKはインストールしただけでは駄目で、その後に設定が必要だった。
Step 3: Update the Visual C++ directories in the Projects and Solutions section in the Options dialog box.
Add the paths to the appropriate subsection:
Executable files: C:\Program Files\Microsoft Platform SDK\Bin
Include files: C:\Program Files\Microsoft Platform SDK\include
Library files: C:\Program Files\Microsoft Platform SDK\lib
Note: Alternatively, you can update the Visual C++ Directories by modifying the VCProjectEngine.dll.express.config file located in the \vc\vcpackages subdirectory of the Visual C++ Express install location. Please make sure that you also delete the file "vccomponents.dat" located in the "%USERPROFILE%\Local Settings\Application Data\Microsoft\VCExpress\8.0" if it exists before restarting Visual C++ Express Edition.
Step 4: Update the corewin_express.vsprops file.
One more step is needed to make the Win32 template work in Visual C++ Express. You need to edit the corewin_express.vsprops file (found in C:\Program Files\Microsoft Visual Studio 8\VC\VCProjectDefaults) and
Change the string that reads:
AdditionalDependencies="kernel32.lib" to
AdditionalDependencies="kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib"
Step 5: Generate and build a Win32 application to test your paths.
In Visual C++ Express, the Win32 Windows Application type is disabled in the Win32 Application Wizard. To enable that type, you need to edit the file AppSettings.htm file located in the folder “%ProgramFiles%\Microsoft Visual Studio 8\VC\VCWizards\AppWiz\Generic\Application\html\1033\".
In a text editor comment out lines 441 - 444 by putting a // in front of them as shown here:
// WIN_APP.disabled = true;
// WIN_APP_LABEL.disabled = true;
// DLL_APP.disabled = true;
// DLL_APP_LABEL.disabled = true;Save and close the file and open Visual C++ Express.
From the File menu, click New Project. In the New Project dialog box, expand the Visual C++ node in the Product Types tree and then click Win32. Click on the Win32 Console Application template and then give your project a name and click OK. In the Win32 Application Wizard dialog box, make sure that Windows application is selected as the Application type and the ATL is not selected. Click the Finish button to generate the project.
As a final step, test your project by clicking the Start button in the IDE or by pressing F5. Your Win32 application should build and run.
見事にこの3ステップをスルーしてしまっていたので、この手順を行い、まずはVC++でWin32アプリをビルド>実行。
真っ白なウィンドウが表示されればビルドは成功。インストールできているということらしい。
さて、次にIntelコンパイラのインストール。とりあえず現状ではVC++ 2005には対応していないので、Visual Studioとの統合は無視。
で、コンパイルするも「mspdb80.dllが見つかりません」というエラーが発生。探してみると、VC++のダイナミックリンクライブラリだった。あれやこれやと悩んで情報を仕入れたのだが、最終的に下記の手順が必要らしい。
これでようやくサンプルコードのコンパイル、実行ができた。
こういうことは書いておけよなぁ。。。。
Windows上でのFortranプログラミング
UNIX環境がない場所へ移動するため、Windows上でFortranコード開発を可能とする道を探してみた。
安直にIntel Compiler for Windowsを選択。
インストールすれば使えるだろうと高をくくっていたのが失敗。
ネット検索したが、情報がちと古いので自分で整理しておくことにした。
まず、インテルコンパイラはVisual Studioに含まれるライブラリを必要とするようで、単体では動作しない。さらに、Version9.0ではVisual Studio .NET 2002/2003が必要であり、現時点での最新版である2005ではカスタマイズが必要になる。また、Visual Studio 2005になって、Express Editionというフリーのバージョンが利用できるようになり(以前のToolkitの代わりだろうか?)、これを用いてもいいらしい。
出来る限り安価に環境構築をすることが目的であるため、今回はこのVisual C++ Express Editionを利用する。
さらに、これだけでは駄目で、Platform SDKも必要となる。以前はコンポーネント毎にダウンロードできたようだが、こちらも最新版では不可能。インストール時に選択したコンポーネントが自動的にダウンロードされるようだ(isoイメージのダウンロードは可能)。
Visual C++、Platform SDKの順にインストールを行い、Intelコンパイラも続けてインストール。
全てのインストールが修了したら、コンパイラのインストールディレクトリにあるC:\Program Files\Intel\Compiler\Fortran\9.0\IA32\Bin\ifortvars.batを編集。
@call
↓
@call "C:\Program Files\Microsoft Visual Studio 8\VC\bin\vcvars32.bat"
@call "C:\Program Files\Microsoft Platform SDK\SetEnv.cmd"
と書き換え保存。
C:\Program Files\Intel\Compiler\Fortran\9.0\IA32\Bin\ifort.cfgを編集
- Qvc8
- Qlocation,link,"c:\Program Files\Microsoft Visual Studio 8\VC\bin"
これでコンパイルができるようになるはず。
が、失敗。何がよくなかったのか。。。もう一度最初からやり直すことにする。。