Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

.NET 2005, (c++) に ついて 旧バージョンとの 互換性は?

5 views
Skip to first unread message

tnktnk

unread,
Mar 15, 2007, 1:14:15 PM3/15/07
to
一昨年 まだでない まだでない とのことで しびれを きらして、
インターネットで .NET 2002 を 購入して、 旧 ”ユニックス版プログラム” と
”Win 16( windows 3.0/3.1) 版” の 2本の 可なり 大きな
プログラムの 変換を してきました。
(本来は 2005 で 行いたかったのですが 始めてから まもなくでた ベータ
版が やっとで 間に合いませんでした)
(なにも .NET 2005 が おそくなった ことを せめているのでは ありません)
そして ユニックス版からの変換はそれほどで ありませんでしたが Win16
からの 変換には 苦労しました。
そして やっと 昨年 2月に 2005が 発売になりましたので 5月に
なり もういいだろうと .NET 2005を 購入しました。 しかるに いきなり
.NET 2005 が 倒れてしまいました。
つかっている フォルダー が c: でないか または ある関数が SHELL を
使うはずの 特殊なもので、 これ以上 当時の XP で つづけたり
Try を することに 無駄を 感じ、 次の OS がでることを まちました。
そして、 ビスタ が やっと 発売になり、 早速、購入し、 Try してみたら、
案の定、 ノー エラー で うまくいき、 いままでの 自分の考え方が、
正しかったと、 ほっとしています。
  さて、 環境は 以上の 通りですが これまた、別の エラー が 発生。
そこで 質問ですが、 先行していらっしゃる 方がおられましたら、教えて
頂きたいのです。  それは、、、、 文字」 関連の、 ユニコード の事です。
 この 昔の プログラム の当時には 無かった物で、 それを
.NET 2002 で 変更、開発してきました間は、問題ありませんでした。
しかるに 一旦 完成して、 .NET 2002 では ノーエラーで 問題なく
動作するのにも かかわらず、 .NET 2005 にて ソリューションを 変換
すると ワーニング だらけで これが 多すぎると リンク エラーに
なります。 そこで、 自作関数と #define を 駆使して ワーニングを
減らして、 なんとか リンクし、 デバッグに 入る事が出来ました。
ところが、動作が どうも おかしいのです。
調べていくうちに、わかってきたのが、 ”ユニコード ライブラリー”を 使用
しているらしいのです。 つまり、シフトJIS に なっていなくて、
その為、  ストリング系の関数(c または c++ の 標準の)が
がたがたで、自作の ゼロサプレス関数なんぞは そうなめで、エラー です。
そんなわけで、 マニュアル類やら、市販の.NET 2005 の 本やら、いろいろ
読んでみましたが、新規作成のソリューションなら  ”ユニコードライブラリーを使用”
の 部分がアプリ ウイザード に でてきますが、 旧バージョンからの 変換
では この ウイザードが でてこないはずです。
では 変換Log になにか エラーメッセージがあるかといえば、 ノー です。
旧バージョンからの 変換は シフトJIS になっているはず と 言いたい
のだけれど、 たしかめることが出来ません。 登録ファイルも 一般には
ひらけません。 手がかりが まったく なくなり ました。
入り口だけでも ご教示いただければ 幸いです。

--
tnktnk

Iwao Nakagawa

unread,
Mar 19, 2007, 10:30:31 PM3/19/07
to
プロジェクトのプロパティページで,左のツリーの「構成プロパティ」-「全般」で
表示される「プロジェクトの既定値」の中にある「文字セット」の指定でどうですか.

VC7~VC8 では,同様の設定があると思います.
質問のポイントを外していたらすみません.

私がメインで使用している環境は,XP(SP2)+VC6+MFC なので,
Vista+VC8 では異なる部分があるかもしれません.

Iwao Nakagawa

unread,
Apr 4, 2007, 1:36:00 AM4/4/07
to
> なぜか わかりませんが ”マルチバイトを使用する” に なっていました。

恐らくプロジェクトを作成した時がその設定だったのだと思います.
VC7? などでは,マルチバイトがデフォルトになっているようです.
それを VC8 に変換するとその設定が引き継がれるので
そのようになっていたのでしょう.


> マルチバイト とは シフトJIS のことですから、これで いいと 思われます。
> ドロップダウン メニュー のうち ”設定なし” は 意味がわかっていない
> ので この際 無視した ほうが いいかと、思っています。 

文字設定のそれぞれの指定により,_MBCS や _UNICODE のいずれか,
または両方未定義("設定なし")になります.
また,"UNICODE" に指定した場合,「リンカ」-「詳細」のエントリポイントも
wWinMainCRTStartup になります.

_MBCS と _UNICODE ですが,汎用テキストマップ(TCHAR.H) を
使用している場合,それぞれ対応する関数にマップされます.
その中で,_mbsstr などは,アプリケーションのロジックによっては
時間がかかりすぎるものもあるので注意が必要です.

VS2005 のドキュメントでは,目次のツリーの
「開発ツールと言語ドキュメント」-「Visual Studio ドキュメント」-
「Visual C++」-「プログラミングガイド」-「一般的な概念」-
「国際化対応のプログラミング」を参考にされてはいかがでしょうか.

0 new messages