普通に単純なサンプルプログラムを実行させようとしただけなのに、思ったよりもずっと苦戦してしまった。
教科書によく出ている加算器のモジュールを作り、そのテストベンチをsc_mainに書くという単純なものだが・・・・
- なぜか、systemc.hがcmath.hを呼び出し、しかも、usingの解消ができないエラーが発生。モジュールは関係なく、#includeだけにしても起きる。プロジェクトをクリーンできれいにしても現象変わらず。昨日、インストール時に確認した最低限(sc_mainだけ)のプロジェクトは再コンパイルしても正常。
結論:VCが何かのリソースを残しているらしい。完全に新しいプロジェクトを起こし直して、ソースコードだけこちらに持ってきたらコンパイル完 - SC_METHODの指定でワーニング。無視してコンパイルしたら実行時にメモリ参照の例外でダウン。普通に教科書通りなので、言語仕様的には間違っていなさそうで、原因追求に時間がかかる。(その間にLiveCygwinでSystemCをコンパイルしようとしていたりして、メモリ不足からシステムが不安定になるなど、混乱に拍車が掛かる)
結論:VCのコマンドラインコンパイルオプションに /vmg を追加することでOK。MSDNには、この手のワーニングが発生した時には /vmm を追加しろと書いてあったのでそれを信じて追求に時間が掛かった。- プロジェクトのプロパティ→C/C++→コマンドラインの追加のオプションに /vmg を記述すること。
- 同じくプロパティー→コード生成→簡易ビルドを行う を 「いいえ」にする
とりあえず、基本の基本(1つのハードウェアモジュールと、それのテストベンチ)がようやくコンパイルできるようになった。Linux+gccでやれば圧倒的に簡単だろうなぁ・・