2003/08/03 - .NET2003移行時の問題

Weather Typing を VS.NET2003 でビルド。

warning C4346: '...' : 依存名は型ではありません。

というエラーが出たのでヘルプで調べると,「依存名を型として扱う場合は typename キーワードが必要です。ISO C++ 標準に準拠するために行われた、Visual C++ .NET 2003 コンパイラでの互換性に影響する変更点」とのこと。というわけで『プログラミング言語C++第3版』で調べると確かにそんな仕様が書いてある。要するにテンプレート引数 template<class T> を使ったとき, T::x を使用したときにコンパイラがそれが型なのか関数なのか瞬時に判断できないので,型であることを知らせるために typename C::x としてくれという話。

ついでにライブラリを static にリンクして,DLL を落とさなくていいようにしようかと思い,static リンクに。しかし,いろいろなライブラリをリンクしているせいか,うまくいかない。最終的には全てのライブラリでランタイムライブラリの設定をマルチスレッド(/MT)にし,スタティック ライブラリで MFC を使用するにすることでビルドすることができた。結果,ファイルサイズもそれ程増えなかったので次のバージョンからはこれで配布する予定。これで DLL がなくて動かないという問題はなくなるはず。

というわけでテストも兼ねて開発版に VS.NET2003 でビルドしたバージョンを置いておいた。なんか使えないよ,って場合はご報告下さると非常にありがたいです。

# 機能的には何も変わってませんので…。


はっぱさんの日記で MSN Messanger6.0 の話があったので入れてみた。ログが XML で取れるようになったりその他いろいろ変わってたが,それより AirH" で安定動作するようになった気がする。前までは 2~3 分ほっておいたらいつのまにかサインアウトしていたが,そんなこともなくなったような。まあしばらく様子見。

コメントする