dポイントプレゼントキャンペーン実施中!

標記の件、
C++Builder2006でGDI+を使っていたソースを2007にバージョンアップすると、エラーが出るようになります。
CodeGearのサイトに
http://dn.codegear.com/fr/article/36871
GdiPlus ライブラリでは #define NO_STRICT をオフにする必要があります・・・等と書いてるのは見つけました。成る程、エラーコードも同じ感じです。
しかし、これを回避する方法であるところのSTRICTモードにする方法がわかりません。

#define STRICT

#include <windows.h>
などを散りばめて試行錯誤しましたが状況は全く変わりません。

それとも根本的に勘違いしてるでしょうか?

わかる方よろしくお願いします。

A 回答 (3件)

★追記。


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

皆さん有難うございます。
コンパイラオプションのシンボル定義の中に、NO_STRICT というのが有るのを見つけました。
これを削除(これも、ただ削除しても反映されず結構難儀しましたが)することでエラーを回避でき、実際にGDI+も使えるようになりました。

余談ですがSTRICTをgrepしたのは既に書きましたようにgdi*.hだけでした。
横着はダメですね。申し訳ありません。

お礼日時:2007/12/11 16:34

★アドバイス


・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+ は使えない?という事かな。
・以上。参考に。
    • good
    • 0

> #define NO_STRICT をオフにする必要があります



というのは
> #define STRICT
じゃなくて、
この#defineの行をコメントアウトするとか、
#undef NO_STRICT
するということじゃないんですか?

この回答への補足

その可能性も考えて、
#undef NO_STRICT
#define NO_STRICT
#undef STRICT
#define STRICT

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

補足日時:2007/12/11 13:26
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!