かなりの初心者でございますm(__)m。
先日のことですが「Visual Studio .net 2003」から「Visual Studio 2005」へアップグレード(というよりは切り替え)を行いました。
すると2003では問題なくビルド出来たものが2005では「fatal error C1189」が出てしまい困っております。
エラーメッセージ
fatal error C1189: #error : Need to include strsafe.h after tchar.h
確かにtchar.hはインクルードしているので、これを文字通りに解釈して後にstrsafe.hをインクルードしたのですが、メッセージは変わらず(--;)。
どの辺りをチェックしたら良いか教えていただけると助かります。
OSはXP、VisualStudioのSP1はあてていません(エラーでSP1がインストール出来ないため)。
お礼
回答ありがとうございます。 >そうでもなければこのシンボルが定義されることはないように思うのですが #ifdefと#ifndefを読み間違えました・・・orz。この大元?はDirectxのサンプルなのですが、最初の方にdxstdafx.hというヘッダファイルをインクルードしてまして、この中に以下の記述がありました(エラー制御?)。 #pragma warning( disable : 4996 ) // disable deprecated warning #include <strsafe.h> #pragma warning( default : 4996 ) これは「C4996を無効化してstrsafe.hをインクルードしてC4996を有効にする」ということだと思うのですが、ご指摘頂いたのがこれかなぁと。 しかしtchar.hをdxstdafx.hの前に持ってくると別のエラーが出てしまいまして、どうするか決めかねています。 確認のため、2003が入っている環境で再度ビルドしてみたところ、エラーは出ずにコンパイル出来るので、2005の仕様なのかなぁと思ったりもしているのですが・・・。 コードをさっさと(tchar.hをインクルードしなくて済む様に)書き換えた方が早いでしょうか?