본문 바로가기

내가 작업한 것들/소프트웨어

MinGW 4.4.1 이상에서 GDI+ 사용시 컴파일 오류 날 시

이전에 올린 MinGW 에서 GDI+ 사용하기로 제공한 소스를 ...

MinGW 4.4.1 또는 그 이상의 버젼의 컴파일러에서 GDI+ 를 쓰기 위해 기존 코드를 이용할 경우 다음 두 오류가 발생 합니다.


GdiplusStringFormat.h:243: error: extra qualification 'Gdiplus::StringFormat::' on member 'GetTrimming'

GdiplusMetafile.h:350: error: extra qualification 'Gdiplus::Metafile::' on member 'EmfToWmfBits'


이는 다음과 같이 해결 될 수 있는데, 좀 더 요긴 한 처리가 필요하긴 합니다.

먼저, GdiplusStringFormat.h 에서 (242~243 라인 부근) StringTrimming StringFormat::GetTrimming() const 형을 StringTrimming GetTrimming() const 로 바꿔 줍니다.

    StringTrimming GetTrimming() const
    // StringTrimming StringFormat::GetTrimming() const
    {
        StringTrimming trimming;
        SetStatus(DllExports::GdipGetStringFormatTrimming(
            nativeFormat,
            &trimming
        ));
        return trimming;
    }

위 처럼 주석으로 막던, 직접 지우던, GetTrimming() const 가 StringFormat class 에 포함되지 않으면 됩니다.

다음은 GdiplusMetafile.h 에서 350번 라인 근처의 static UINT Metafile::EmfToWmfBits 형을 static UINT EmfToWmfBits 으로 바꿉니다.
아래 처럼 되겠네요.

	static UINT EmfToWmfBits(
    //static UINT Metafile::EmfToWmfBits(
        IN HENHMETAFILE       hemf,
        IN UINT               cbData16,
        IN LPBYTE             pData16,
        IN INT                iMapMode = MM_ANISOTROPIC,
        IN EmfToWmfBitsFlags  eFlags = EmfToWmfBitsFlagsDefault
    )

이제 컴파일 하면 문제 없이 사용할 수 있을것으로 보입니다.
혹시 해서 수정된 GDI+ header 를 zip 파일로 첨부 합니다.
필요 하신 분들은 도움이 되면 좋겠습니다.