- 締切済み
C++Builder2007でGdiPlus
標記の件、 C++Builder2006でGDI+を使っていたソースを2007にバージョンアップすると、エラーが出るようになります。 CodeGearのサイトに http://dn.codegear.com/fr/article/36871 GdiPlus ライブラリでは #define NO_STRICT をオフにする必要があります・・・等と書いてるのは見つけました。成る程、エラーコードも同じ感じです。 しかし、これを回避する方法であるところのSTRICTモードにする方法がわかりません。 #define STRICT や #include <windows.h> などを散りばめて試行錯誤しましたが状況は全く変わりません。 それとも根本的に勘違いしてるでしょうか? わかる方よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- Oh-Orange
- ベストアンサー率63% (854/1345)
★追記。 >また、インクルードされているであろう、gdi*.h には STRICTの文字列自体が見当たりません。 ↑ 検索する『WinGDI.h』ヘッダで『STRICT』が使われていますよ。 他にも WinUser.h、WinNT.h でも『STRICT』定数を参照しているようです。 ・本当にヘッダファイルなどを検索してみましたか?
- Oh-Orange
- ベストアンサー率63% (854/1345)
★アドバイス ・C++Builderは使っていないのですが、VC++2003.NET の環境では WinDef.h のヘッダに 次のような定義がありました。 #ifndef NO_STRICT #ifndef STRICT #define STRICT 1 #endif #endif /* NO_STRICT */ WinDef.h ファイルの13行~17行目です。 この定義より『NO_STRICT』が定義されていないときだけ『STRICT』が定義されていないと 『STRICT』を『1』で定義するという意味らしいです。 >GdiPlus ライブラリでは #define NO_STRICT をオフにする必要があります・ このオフという意味が『NO_STRICT』を定義するなという事ではないでしょうか。 つまり『STRICT』も定義していなければ『STRICT』が『1』となるので『STRICT』が『1』でないと GDI+ は使えない?という事かな。 ・以上。参考に。
- sakusaker7
- ベストアンサー率62% (800/1280)
> #define NO_STRICT をオフにする必要があります というのは > #define STRICT じゃなくて、 この#defineの行をコメントアウトするとか、 #undef NO_STRICT するということじゃないんですか?
補足
その可能性も考えて、 #undef NO_STRICT #define NO_STRICT #undef STRICT #define STRICT など色々やってはみているんですが、ダメです。 また、インクルードされているであろう、gdi*.h には STRICTの文字列自体が見当たりません。
お礼
皆さん有難うございます。 コンパイラオプションのシンボル定義の中に、NO_STRICT というのが有るのを見つけました。 これを削除(これも、ただ削除しても反映されず結構難儀しましたが)することでエラーを回避でき、実際にGDI+も使えるようになりました。 余談ですがSTRICTをgrepしたのは既に書きましたようにgdi*.hだけでした。 横着はダメですね。申し訳ありません。