Cosmo-Zの操作アプリをWindowsに移植中
これまでZYNQ Linuxで動作していたCosmo-Zを操作するアプリ「cszmain.elf」をWindowsに移植中です。
苦労しているのは、string.hの関数の扱いです。
なぜだかわかりませんが、Linuxでは大文字小文字を気にしない文字列比較がstrcasecmpなのに、Windowsではstricmpになります。Visual C++だけでなくBorland C++でもstricmpなのでなぜなんでしょうね。
他にも、Visual C++だとstrcatとか使えなくてstrcat_sになっていたり、strdupは_strdupになっていたりするので一つ一つ置き換えていきます。
ディレクトリの中のファイル一覧を見る関数とかは全面的に変えなければならないでしょうね。
このような単純な置き換え作業がまだまだ続きます。
| 固定リンク
コメント
Linuxでは大文字小文字を気にしない文字列比較がstrcasecmpなのに、Windowsではstricmpという名前になった理由はわかりませんが、標準Cライブラリに大文字・小文字を区別しない比較関数が存在しないのでそれぞれ独自に追加したからだと思います。Cプリプロセッサを使って同じ関数名で呼び出せるようにしておく対象方法がお手軽です。
エラーメッセージに書かれていますが、Visual C++では _CRT_SECURE_NO_WARNINGS をプリプロセッサのシンボルとして定義する事で、引数にバッファ長を指定しない従来の標準Cライブラリを使う事が出来ます(プロジェクトのプロパティで指定すると一括で適用出来るので楽)。
投稿: beru | 2021.05.09 16:54