
かなりの初心者でございます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がインストール出来ないため)。
No.3ベストアンサー
- 回答日時:
C1189 はコンパイル指令 #error によるものらしいので
Fatal Error C1189 (C++)
http://msdn2.microsoft.com/en-us/library/y0tzt8e …
#error Need to include strsafe.h after tchar.h
というのを検索してみると、
vc/include/tchar.h に
#ifdef _STRSAFE_H_INCLUDED_
#error Need to include strsafe.h after tchar.h
#endif
というのが見つかりました。
tchar.h, strsafe.hのほかにどんなファイルを includeしているか
わかりませんが、間接的にでもどこかから strsafe.h をすでに
読みこんでしまっているということはありませんか?
そうでもなければこのシンボルが定義されることはないように思うのですが。
ざっと見たところ、vc8/include と vc8/PlatformSDK/include には
strsafe を独自に取り込むようになっているファイルはないですね。
#まあ当然か
回答ありがとうございます。
>そうでもなければこのシンボルが定義されることはないように思うのですが
#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をインクルードしなくて済む様に)書き換えた方が早いでしょうか?
No.2
- 回答日時:
回答ありがとうございます。
リンク先を拝見しましたが、tchar.hをインクルードするにはstrsafe.hが必要で(これはtchar.hの中にそれっぽい部分がありました)、順番は「tchar.h、strsafe.h」としなければならないという回答ですね。
しかしこの順番でインクルードしてるのですが、同じエラーが出てしまうのです(--;)。
No.1
- 回答日時:
「Visual Studio 2005」はUNICODEを使うことがデフォルト設定になっているため、2003やVC6で作ったコードがそのまま通らないことが多いです。
試しに「メニュー」→「プロジェクト」→「<あなたのプロジェクト名>のプロパティ」→「構成プロパティ」→「全般」で「UNICODE文字セットを利用する」から「マルチバイト文字セットを利用する」に切り替えてコンパイルしてみてください。
ヘッダ関係を調査するより、こちらの方が早いと思います。
これで通ると良いのですが・・・。
回答ありがとうございます。
>「UNICODE文字セットを利用する」から「マルチバイト文字セットを
>利用する」に切り替えてコンパイルしてみてください
実はDirectxのDXUTを使ったプログラムなのです。DXUTがUnicodeが前提となっているためMBCSに出来ないのです(T_T)。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Arduinoに関する質問 4 2023/08/07 21:19
- サーバー WindowsでApache が起動しない 1 2022/11/29 12:21
- その他(プログラミング・Web制作) python fbprophetについて 1 2022/09/29 19:44
- Windows 10 Visual StudioとVisual C++ Build Toolsについて 1 2023/04/16 03:42
- C言語・C++・C# visual studio 2019において、宣言していない変数があるのにエラーなくビルド出来ました 6 2023/03/08 16:32
- その他(パソコン・周辺機器) dvd書き込めない 5 2022/03/22 19:06
- Windows 10 VirtualBox 7のゲストOSでの物理HDDパーティションのマウント方法 2 2023/05/04 13:01
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
- その他(プログラミング・Web制作) mariadbでのエラー 1 2022/11/15 12:31
- オープンソース Vue+Laravelのデザインテンプレートのサンプルが起動できない 1 2022/05/18 21:52
このQ&Aを見た人はこんなQ&Aも見ています
-
CStringからchar*への型変換について教えてください。
C言語・C++・C#
-
CString から LPCTSTRの型に変換
C言語・C++・C#
-
画面を強制的に再描画させる方法
C言語・C++・C#
-
-
4
CStringのFindで文字列検索を行いたいのですが
C言語・C++・C#
-
5
多重定義が起きている?--lnk2005エラー:VC++
C言語・C++・C#
-
6
CoCreateInstanceでエラーになる。
C言語・C++・C#
-
7
1 つ以上の複数回定義されているシンボルが見つかりました
C言語・C++・C#
-
8
ファイルやディレクトリの存在確認を行う方法
C言語・C++・C#
-
9
ダイアログ表示時にチェックボックスにチェックされている状態にするには?
C言語・C++・C#
-
10
CFileDialogの最初のディレクトリ設定
C言語・C++・C#
-
11
std::stringからLPCWSTR型への変換
C言語・C++・C#
-
12
コンボボックスの高さを変更したい。
C言語・C++・C#
-
13
構文エラー;"が型の前にありませんとは、どうしたら解決できるのですか。"
C言語・C++・C#
-
14
エラーの原因は?「この関数の定義が見つかりません」
C言語・C++・C#
-
15
char*を初期化したいのですが
C言語・C++・C#
-
16
charからLPTSTRへの変換方法
C言語・C++・C#
-
17
INT64対応のprintf系関数はありますか?
C言語・C++・C#
-
18
コンボボックスのドロップダウンリストが表示されない
C言語・C++・C#
-
19
すべてのリビルド: 0 正常、 0 失敗、 1 スキップ となる理由?
C言語・C++・C#
-
20
C言語 配列の長さの上限
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAを何回も作り直して、容量が...
-
C言語でヘッダファイルにグロー...
-
1 つ以上の複数回定義されてい...
-
「fatal error C1189」を回避す...
-
<math.h>があるのにsqrtが・...
-
エクセルVBAではRound...
-
” OS ビルド ” の意味が分か...
-
VB6とInputManソフトの関係
-
ILSpyで、デコンパイルできない。
-
PRO*C コンパイルエラー
-
エクセルのマクロで教えて下さい
-
ビルドから除外されたソースの...
-
複数のサブディレクトリを一緒...
-
「DeclareステートメントにPtrS...
-
C言語でmからnまでの合計を求め...
-
Visual C++ ヘッダー情報の反映
-
共有ライブラリの関数はヘッダ...
-
LoadLibraryについて
-
C++ ini 書き込みについて
-
【.NET2005 C#】 実行ファイル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAを何回も作り直して、容量が...
-
” OS ビルド ” の意味が分か...
-
「fatal error C1189」を回避す...
-
C言語でヘッダファイルにグロー...
-
エクセルVBAではRound...
-
Makefile作成時の拡張子.oとは?
-
ILSpyで、デコンパイルできない。
-
1 つ以上の複数回定義されてい...
-
マクロ コンパイルがグレーバック
-
セミコロンについて
-
外部シンボル "_main"は未解決です
-
C++コンパイル時に『 C1083: in...
-
ビルドとリビルドの違いを教え...
-
コンパイルエラー:ユーザ定義...
-
「DeclareステートメントにPtrS...
-
戻り値について
-
pyc 編集 閲覧
-
PRO*C コンパイルエラー
-
【VC++6.0(MFC)】警告「LINK : ...
-
漢字のコメントをはずすとコン...
おすすめ情報