概要
どんな理由か知らないけれど、Visual Studio.NET 2003では
wchar_tをshortとして扱うようになっている。
一応、プロジェクトプロパティ「C/C++」-「言語」にある
「wchar_tをビルトイン型として扱う」の値を「はい」にすれば
この問題は解決するが、プロジェクト作成のたびに行うのは面倒だし
忘れがちになってしまう。
問題点
- shortとwchar_tのオーバーロードができない
- このオプションを「はい」にしたライブラリが使えない(未解決シンボルとなる)
解決策
「C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\VCWizards」にある
「default.vcproj」を以下のようにしておく。
<?xml version="1.0"?> <VisualStudioProject ProjectType="Visual C++" Version="7.10"> <Platform Name="Win32"/> <Configuration Name="Debug|Win32"> <Tool Name="VCCLCompilerTool" TreatWChar_tAsBuiltInType="TRUE"/> </Configuration> <Configuration Name="Release|Win32"> <Tool Name="VCCLCompilerTool" TreatWChar_tAsBuiltInType="TRUE"/> </Configuration> <References/> </VisualStudioProject>
このXMLファイル中の「Debug」および「Release」にあるTool要素の属性
「TreatWChar_tAsBuiltInType="TRUE"」が今回の問題を解決する。
とりあえず、MFCとWin32、.NETフォームのプロジェクトで設定が反映されることを確認した。
なお、警告レベル設定の属性「WarningLevel="3"」は無視される模様。
(というか上書きっぽい)