« 2012年5月 | トップページ | 2012年8月 »

2012年7月

2012年7月 9日 (月)

gdiplus.h インクルードによるコンパイルエラー

GDI+を使用するためにgdiplus.hをインクルードしますが、
<http://support.microsoft.com/kb/922323>
このページにも書いてある通り、
stdafx.h内のWIN32_LEAN_AND_MEANが原因でコンパイルエラーになります。
上記のページではVisualStudio2005とありますが、依然として2010でも同様です。
この回避方法としてWIN32_LEAN_AND_MEANを削除すれば良いのですが、
windows.hの中を見るとわかるように、
WIN32_LEAN_AND_MEAN を削除するとwinsock.hなど
場合によってはインクルードしたくないヘッダまでインクルードしてしまいます※1。
このため、WIN32_LEAN_AND_MEAN を残したままにしたい場合は、
ole2.hをgdiplus.hの前でインクルードする、
または、gdiplus.hはole2.hの中のobjbase.hが欲しいようなので、
ole2.hの代わりにobjbase.hをインクルードすることでコンパイルエラーを回避できます。

※1 この場合も、winsock2.hで #define _WINSOCKAPI_ しているため、
windows.hよりも前にwinsock2.hをインクルードすれば、
windows.hでインクルードしているwinsock.hは無効化されます。

| | コメント (0) | トラックバック (0)

« 2012年5月 | トップページ | 2012年8月 »