掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
_UNICODE / _MBCSコンパイルのdllの混在呼び出しについて (ID:52292)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> ひとつのプログラム内に「_UNICODEオプション」でビルドしたdllと「_MBCSオプション」でビルドしたdllを混在させ、相互に呼び出しすることは問題はないのでしょうか? 問題ないです。 ただし,MFCのようにUNICODE用と非UNICODE用がわかれている場合,問題が起きるかもしれません。 古いCString(VC++ 6.0やそれ以前)では,CStringはTCHARを保持しているため, UNICODE用と非UNICODE用でCString自体が変わっています。 > Microsoft的には同一プロセス内は「UNICODE」コンパイルならUNICODEコンパイルで全モジュールを統一しないといけないと規定されているのでしょうか? そんなことを規定すると,95系とNT系で相互に運用可能なプログラムが作成できなくなります。 > 同一のプロセス空間上に、異なるコードセットの命令(A系とW系)がロードされることで、誤動作したりするのではないか?と心配です。 NT系OSにおいては,A系のAPIを呼び出すと,文字列がすべてUNICODEに置き換えられてW系のAPIが呼ばれます。 つまり,どちらのAPIも必ずロードされます。 > 既存のMBCSで作成されたプログラムが何百Ksと有り、これをUNICODE対応しなければなりません。 > 乱暴な言い方をすると、UNICODE(私用領域を含む)を表示・入力するダイアログ部分だけを_UNICODEでコンパイルし、あまりUnicode文字列操作に関係のない「通信系dll」や「ファイル・アクセス系dll」あたりはMBCSのままとしたい目論見です。 画面まわりは全て一致させる必要があります。 これは,メッセージ関連の,特にWM_SETTEXTなどの関連で問題が起きるためです。 それ以外は,インターフェースさえちゃんとしていれば問題ないです。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.