初めて投稿させて頂きます。
・開発環境:CS+ for CC V8.03.00(YellowIDEからの移行)
現在、H8/3694用に組んだものをCS+にてRX130用プロジェクトに移行し、動作させたいと考えています。
互換性が無い移行のようで、手動で対応できるエラーについてはあらかた対応し終わったのですが、
下記のようなコンパイラ部分?に未定義エラーなどが無数に発生しており、難儀しております。
未定義であるという意味自体は分かるのですが、開発環境のインクルードファイルに発生している原因と対処が分からず、
対応方法などご教示願えれば幸いです。
(E) E0520020 C:\Program Files (x86)\Renesas Electronics\CS+\CC\CC-RX\V3.02.00\include\ios(28):E0520020:Identifier "class" is undefined ios 28 Test.mtpj
(E) E0520020 C:\Program Files (x86)\Renesas Electronics\CS+\CC\CC-RX\V3.02.00\include\ios(64):E0520020:Identifier "iostate" is undefined ios 64 Test.mtpj
(E) E0520020 C:\Program Files (x86)\Renesas Electronics\CS+\CC\CC-RX\V3.02.00\include\ios(82):E0520020:Identifier "fmtflags" is undefined ios 82 Test.mtpj
等
Thermidorさん、こんにちは。NoMaYです。CC-RXのインクルードファイルを追い掛けてみると、iostreamヘッダファイルから2つほどヘッダファイルを経由してiosヘッダファイルがインクルードされることになりますね。なので、それが原因ですね。ただ、iostreamをインクルードから外して、2進数表記を修正して、それでコンパイル/リンクが通るようになるかは正直なところ分からないです。(私の方はYellowIDE&Yellow C(?)の仕様が分からないですので、どれだけの道のりがあるのか何とも言えないです。)ひとつ思ったのですが、RXマイコン用のGCCコンパイラを試してみる手もあるかも知れません。ちなみに、YellowIDEで使用されていたコンパイラがH8マイコン用のGCCコンパイラだった、とかだったりしますか?そうであれば、e2 studiという開発環境でRXマイコン用のGCCコンパイラが使えますので、コンパイラにこだわりが無ければ、そういう手段も考えられるかも知れません。なお、CC-RXでの2進数表記に関してはちょっと手を考えてみました。CC-RX向けの2進数リテラル表記もどきマクロを作ってみた(binary literal macro)japan.renesasrulz.com/cafe_rene/f/forum21/6721/cc-rx-2-binary-literal-macro
Thermidorさん、こんにちは。NoMaYです。もっと早くに気付けば良かったのですが、あのマクロは16bit長では使えないですね。でも、16bit長までなら少し変更すれば使えます。ですが、32bit長は無理ですね。あちらのスレッドに続きを書きました。
Thermidorさん、こんにちは。NoMaYです。> 何か基本的な設定をミスしているのでしょうか……。地道にコンパイラ移行作業が進行中なのだと思います。ひょっとして、コンパイラの移行作業は初めてでしょうか?> (E) E0562310 E0562310:Undefined external symbol "__ei" referenced in "DefaultBuild\hogehoge.obj" Test.mtpj__eiが見つからないということは_ei()というYCH8コンパイラにはあるがCC-RXには無い組み込み関数が使われていた、ということの筈です。名前からCC-RXの__setpsw_i()に相当すると思われますので、置き換えれば良いかと思います。(CC-RX V3.02では、__setpsw_i()に置き換えるのが手間が少ないと思います。)ちなみに、_di()に関しては__clrpsw_i()に置き換えれば良いかと思います。その他もろもろはYCH8とCC-RXのコンパイラのヘルプ/ドキュメントを検索して比較したりすることで分かると思います。