掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
_UNICODE / _MBCSコンパイルのdllの混在呼び出しについて (ID:52291)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
VC++でUnicodeを扱うアプリケーションを開発しています。 ひとつのプログラム内に「_UNICODEオプション」でビルドしたdllと「_MBCSオプション」でビルドしたdllを混在させ、相互に呼び出しすることは問題はないのでしょうか? ○UNICODEコンパイルしたdllから、MBCSコンパイルしたdllを呼ぶ とか ○MBCSコンパイルされているdllから、UNICODEコンパイルのdllを呼び出すとか... ※いろんな人に尋ねたり、ネット上を検索してみたのですが、『そういうことをしても良い』とも書かれていないですが、『しちゃダメ』とも書かれていません。 Microsoft的には同一プロセス内は「UNICODE」コンパイルならUNICODEコンパイルで全モジュールを統一しないといけないと規定されているのでしょうか? 異なるコードセットでコンパイルしたdllを同一プログラム内に混在させた場合には、正常動作を保証しない...というようなことがMSDNやVCのヘルプ内に記載されていますでしょうか? 同一のプロセス空間上に、異なるコードセットの命令(A系とW系)がロードされることで、誤動作したりするのではないか?と心配です。 既存のMBCSで作成されたプログラムが何百Ksと有り、これをUNICODE対応しなければなりません。 乱暴な言い方をすると、UNICODE(私用領域を含む)を表示・入力するダイアログ部分だけを_UNICODEでコンパイルし、あまりUnicode文字列操作に関係のない「通信系dll」や「ファイル・アクセス系dll」あたりはMBCSのままとしたい目論見です。 ※TCHARを使用してどちらのコンパイル・オプションを使用しても良いようにプログラムを書き換えてUnicode対応しようと考えていますが、そもそも『_MBCSのdll』から『_UNICODEのdll』を呼び出すことが、MicrosoftのVC++として『許されていない』のか『特に問題ない』のかどうかを教えてください。 『混在して呼び出しているが何の問題もないよ』とか『このような誤動作が生じた』とかいう貴重な情報でも結構です。ぜひ教えてください。 ※できあがったプログラムは、WindowsNT系のOS上でのみ動作させます。95/98系のOS上で動作させる予定はありません。 ※ダイアログでUnicodeの外字(私用領域)を入力できる必要があります。 ※WindowsXP Professional(SP1a)上で、VC++6.0(SP5)で開発しています。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.