Programing Tips(VC++)

いくつかのTips、間違った対処法かもしれませんが…。

目次

1.__field_ecount_opt
2.__range
3.::TrackMouseEvent(&p1)
4.::SHCreateDirectory(p1,p2)
5.fatal error C1007: '-typedil' (オプション 'p2' 中) は認識できません。


__field_ecount_opt(p1) LPBYTE p2 で次のようなエラーが出る。

amfilter.h(1217) : error C2061: 構文エラー : 識別子 'p1'
amfilter.h(1217) : error C3646: 'LPBYTE' : 不明なオーバーライド指定子です
amfilter.h(1217) : error C3646: 'p2' : 不明なオーバーライド指定子です
amfilter.h(1217) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
amfilter.h(1217) : warning C4183: '__field_ecount_opt': 戻り値の型がありません。'int' を返すメンバ関数とみなします。

対策

#define __field_ecount_opt __ecount_opt

を定義する。

__range(a,b) LONG p1で次のようなエラーが出る。

outputq.h(113) : error C2059: 構文エラー : '定数'
outputq.h(113) : error C3646: 'LONG' : 不明なオーバーライド指定子です
outputq.h(113) : error C3646: 'p1' : 不明なオーバーライド指定子です
outputq.h(113) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
outputq.h(113) : warning C4183: '__range': 戻り値の型がありません。'int' を返すメンバ関数とみなします。

対策

#define __range( p1, p2 )

を定義する。

::TrackMouseEvent(&p1) で次のようなエラーが出る。

sample.cpp(n) : error C2039: 'TrackMouseEvent' : '`global namespace'' のメンバではありません。
sample.cpp(n) : error C3861: 'TrackMouseEvent': 識別子が見つかりませんでした。

対策

#define _WIN32_WINNT 0x0500

を定義する。

::SHCreateDirectory(p1,p2)で次のようなエラーが出る。

sampel.cpp(n) : error C2039: 'SHCreateDirectory' : '`global namespace'' のメンバではありません。
sample.cpp(n) : error C3861: 'SHCreateDirectory': 識別子が見つかりませんでした。

対策

#define _WIN32_IE 0x0601

を定義する。

Visual Studio C++2005でコンパイル時に次のエラーが出る。

fatal error C1007: '-typedil' (オプション 'p2' 中) は認識できません。
LINK : fatal error LNK1257: コードの生成に失敗しました。

原因

VC++2008でコンパイルされた非対応のライブラリをVC++2005で使用した。

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です