• 締切済み

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> などを散りばめて試行錯誤しましたが状況は全く変わりません。 それとも根本的に勘違いしてるでしょうか? わかる方よろしくお願いします。

みんなの回答

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.3

★追記。 >また、インクルードされているであろう、gdi*.h には STRICTの文字列自体が見当たりません。  ↑  検索する『WinGDI.h』ヘッダで『STRICT』が使われていますよ。  他にも WinUser.h、WinNT.h でも『STRICT』定数を参照しているようです。 ・本当にヘッダファイルなどを検索してみましたか?

lachesis-r
質問者

お礼

皆さん有難うございます。 コンパイラオプションのシンボル定義の中に、NO_STRICT というのが有るのを見つけました。 これを削除(これも、ただ削除しても反映されず結構難儀しましたが)することでエラーを回避でき、実際にGDI+も使えるようになりました。 余談ですがSTRICTをgrepしたのは既に書きましたようにgdi*.hだけでした。 横着はダメですね。申し訳ありません。

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.2

★アドバイス ・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)
回答No.1

> #define NO_STRICT をオフにする必要があります というのは > #define STRICT じゃなくて、 この#defineの行をコメントアウトするとか、 #undef NO_STRICT するということじゃないんですか?

lachesis-r
質問者

補足

その可能性も考えて、 #undef NO_STRICT #define NO_STRICT #undef STRICT #define STRICT など色々やってはみているんですが、ダメです。 また、インクルードされているであろう、gdi*.h には STRICTの文字列自体が見当たりません。

関連するQ&A