본문 바로가기
Study/MFC

win32 환경에서 GDI+ 사용시 빌드에러

by 뿡뿡대마왕 2016. 9. 1.
반응형

출처: http://alexjeon1227.tistory.com/21


win32 프로젝트 환경에서(MFC 미사용) Gdi+ 사용하려고

#include <Gdiplus.h> 넣고

#pragma comment(lib, "gdiplus.lib") 라이브러리 링크걸고..


근데 이런..엄청난 에러들이.. 



>c:\program files (x86)\windows kits\8.1\include\um\GdiplusImaging.h(79): error C4430: 형식 지정자가 없습니다. int로 가정합니다. 참고: C++에서는 기본 int를 지원하지 않습니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusImaging.h(79): error C2440: '초기화 중' : 'const char [37]'에서 'int'(으)로 변환할 수 없습니다.

1>          이 변환이 가능한 컨텍스트가 없습니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusImaging.h(79): error C2146: 구문 오류 : ';'이(가) 'IImageBytes' 식별자 앞에 없습니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusImaging.h(79): error C2143: 구문 오류 : ';'이(가) ':' 앞에 없습니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusImaging.h(79): error C2059: 구문 오류 : 'public'

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusImaging.h(80): error C2143: 구문 오류 : ';'이(가) '{' 앞에 없습니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusImaging.h(80): error C2447: '{' : 함수 헤더가 없습니다. 이전 스타일의 형식 목록입니까?

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusImaging.h(285): error C2146: 구문 오류 : ';'이(가) 'id' 식별자 앞에 없습니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusImaging.h(285): error C4430: 형식 지정자가 없습니다. int로 가정합니다. 참고: C++에서는 기본 int를 지원하지 않습니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusHeaders.h(390): error C2061: 구문 오류 : 식별자 'IStream'

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusHeaders.h(401): error C2061: 구문 오류 : 식별자 'IStream'

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusHeaders.h(411): error C2061: 구문 오류 : 식별자 'IStream'

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusHeaders.h(449): error C2061: 구문 오류 : 식별자 'PROPID'

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusHeaders.h(450): error C2061: 구문 오류 : 식별자 'PROPID'

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusHeaders.h(451): error C2061: 구문 오류 : 식별자 'PROPID'

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusHeaders.h(459): error C2061: 구문 오류 : 식별자 'PROPID'

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusHeaders.h(477): error C2535: 'Gdiplus::Image::Image(void)' : 멤버 함수를 이미 정의했거나 선언했습니다.

1>          c:\program files (x86)\windows kits\8.1\include\um\GdiplusHeaders.h(390) : 'Gdiplus::Image::Image' 선언을 참조하십시오.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusHeaders.h(512): error C2061: 구문 오류 : 식별자 'IStream'

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusHeaders.h(523): error C2061: 구문 오류 : 식별자 'IStream'

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusHeaders.h(767): error C2061: 구문 오류 : 식별자 'IStream'

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusHeaders.h(822): error C2061: 구문 오류 : 식별자 'IStream'

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusHeaders.h(822): error C2535: 'Gdiplus::Metafile::Metafile(void)' : 멤버 함수를 이미 정의했거나 선언했습니다.

1>          c:\program files (x86)\windows kits\8.1\include\um\GdiplusHeaders.h(767) : 'Gdiplus::Metafile::Metafile' 선언을 참조하십시오.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusHeaders.h(829): error C2061: 구문 오류 : 식별자 'IStream'

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusHeaders.h(829): error C2535: 'Gdiplus::Metafile::Metafile(void)' : 멤버 함수를 이미 정의했거나 선언했습니다.

1>          c:\program files (x86)\windows kits\8.1\include\um\GdiplusHeaders.h(767) : 'Gdiplus::Metafile::Metafile' 선언을 참조하십시오.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusHeaders.h(838): error C2061: 구문 오류 : 식별자 'IStream'

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusHeaders.h(838): error C2535: 'Gdiplus::Metafile::Metafile(void)' : 멤버 함수를 이미 정의했거나 선언했습니다.

1>          c:\program files (x86)\windows kits\8.1\include\um\GdiplusHeaders.h(767) : 'Gdiplus::Metafile::Metafile' 선언을 참조하십시오.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusHeaders.h(864): error C2061: 구문 오류 : 식별자 'IStream'

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusHeaders.h(932): error C2535: 'Gdiplus::Metafile::Metafile(void)' : 멤버 함수를 이미 정의했거나 선언했습니다.

1>          c:\program files (x86)\windows kits\8.1\include\um\GdiplusHeaders.h(767) : 'Gdiplus::Metafile::Metafile' 선언을 참조하십시오.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(1145): error C2065: 'IStream' : 선언되지 않은 식별자입니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(1145): error C2065: 'stream' : 선언되지 않은 식별자입니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(1145): error C2065: 'image' : 선언되지 않은 식별자입니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(1145): error C2275: 'Gdiplus::GpImage' : 이 형식을 식으로 잘못 사용했습니다.

1>          c:\program files (x86)\windows kits\8.1\include\um\GdiplusGpStubs.h(66) : 'Gdiplus::GpImage' 선언을 참조하십시오.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(1145): warning C4229: 오래된 구문을 사용했습니다 : 데이터의 한정자가 무시됩니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(1151): error C2065: 'IStream' : 선언되지 않은 식별자입니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(1151): error C2065: 'stream' : 선언되지 않은 식별자입니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(1151): error C2065: 'image' : 선언되지 않은 식별자입니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(1151): error C2275: 'Gdiplus::GpImage' : 이 형식을 식으로 잘못 사용했습니다.

1>          c:\program files (x86)\windows kits\8.1\include\um\GdiplusGpStubs.h(66) : 'Gdiplus::GpImage' 선언을 참조하십시오.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(1151): warning C4229: 오래된 구문을 사용했습니다 : 데이터의 한정자가 무시됩니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(1168): error C2061: 구문 오류 : 식별자 'IStream'

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(1256): error C2061: 구문 오류 : 식별자 'PROPID'

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(1259): error C2061: 구문 오류 : 식별자 'PROPID'

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(1262): error C2061: 구문 오류 : 식별자 'PROPID'

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(1274): error C2061: 구문 오류 : 식별자 'PROPID'

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(1298): error C2065: 'IStream' : 선언되지 않은 식별자입니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(1298): error C2065: 'stream' : 선언되지 않은 식별자입니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(1298): error C2065: 'bitmap' : 선언되지 않은 식별자입니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(1298): error C2275: 'Gdiplus::GpBitmap' : 이 형식을 식으로 잘못 사용했습니다.

1>          c:\program files (x86)\windows kits\8.1\include\um\GdiplusGpStubs.h(67) : 'Gdiplus::GpBitmap' 선언을 참조하십시오.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(1298): warning C4229: 오래된 구문을 사용했습니다 : 데이터의 한정자가 무시됩니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(1304): error C2065: 'IStream' : 선언되지 않은 식별자입니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(1304): error C2065: 'stream' : 선언되지 않은 식별자입니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(1304): error C2065: 'bitmap' : 선언되지 않은 식별자입니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(1304): error C2275: 'Gdiplus::GpBitmap' : 이 형식을 식으로 잘못 사용했습니다.

1>          c:\program files (x86)\windows kits\8.1\include\um\GdiplusGpStubs.h(67) : 'Gdiplus::GpBitmap' 선언을 참조하십시오.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(1304): warning C4229: 오래된 구문을 사용했습니다 : 데이터의 한정자가 무시됩니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(2235): error C2065: 'IStream' : 선언되지 않은 식별자입니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(2235): error C2065: 'stream' : 선언되지 않은 식별자입니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(2237): error C2065: 'header' : 선언되지 않은 식별자입니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(2237): error C2275: 'Gdiplus::MetafileHeader' : 이 형식을 식으로 잘못 사용했습니다.

1>          c:\program files (x86)\windows kits\8.1\include\um\GdiplusMetaHeader.h(117) : 'Gdiplus::MetafileHeader' 선언을 참조하십시오.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(2237): warning C4229: 오래된 구문을 사용했습니다 : 데이터의 한정자가 무시됩니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(2255): error C2061: 구문 오류 : 식별자 'IStream'

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(2275): error C2065: 'IStream' : 선언되지 않은 식별자입니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(2275): error C2065: 'stream' : 선언되지 않은 식별자입니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(2275): error C2065: 'metafile' : 선언되지 않은 식별자입니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(2275): error C2275: 'Gdiplus::GpMetafile' : 이 형식을 식으로 잘못 사용했습니다.

1>          c:\program files (x86)\windows kits\8.1\include\um\GdiplusGpStubs.h(68) : 'Gdiplus::GpMetafile' 선언을 참조하십시오.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(2275): warning C4229: 오래된 구문을 사용했습니다 : 데이터의 한정자가 무시됩니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(2322): error C2065: 'IStream' : 선언되지 않은 식별자입니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(2322): error C2065: 'stream' : 선언되지 않은 식별자입니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(2323): error C2275: 'HDC' : 이 형식을 식으로 잘못 사용했습니다.

1>          C:\Program Files (x86)\Windows Kits\8.1\Include\shared\windef.h(80) : 'HDC' 선언을 참조하십시오.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(2323): error C2146: 구문 오류 : ')'이(가) 'referenceHdc' 식별자 앞에 없습니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(2323): warning C4229: 오래된 구문을 사용했습니다 : 데이터의 한정자가 무시됩니다.

1>          C:\Program Files (x86)\Windows Kits\8.1\Include\shared\windef.h(80) : 'HDC' 선언을 참조하십시오.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(2329): error C2059: 구문 오류 : ')'

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(2333): error C2065: 'IStream' : 선언되지 않은 식별자입니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(2333): error C2065: 'stream' : 선언되지 않은 식별자입니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(2334): error C2275: 'HDC' : 이 형식을 식으로 잘못 사용했습니다.

1>          C:\Program Files (x86)\Windows Kits\8.1\Include\shared\windef.h(80) : 'HDC' 선언을 참조하십시오.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(2334): error C2146: 구문 오류 : ')'이(가) 'referenceHdc' 식별자 앞에 없습니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(2334): warning C4229: 오래된 구문을 사용했습니다 : 데이터의 한정자가 무시됩니다.

1>          C:\Program Files (x86)\Windows Kits\8.1\Include\shared\windef.h(80) : 'HDC' 선언을 참조하십시오.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusFlat.h(2340): error C2059: 구문 오류 : ')'

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusPath.h(138): error C2061: 구문 오류 : 식별자 'byte'

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusMetafile.h(80): error C2065: 'IStream' : 선언되지 않은 식별자입니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusMetafile.h(80): error C2065: 'stream' : 선언되지 않은 식별자입니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusMetafile.h(81): error C2448: 'Gdiplus::Metafile::{ctor}' : 함수 스타일 이니셜라이저가 함수 정의처럼 나타납니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusMetafile.h(199): error C2065: 'IStream' : 선언되지 않은 식별자입니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusMetafile.h(199): error C2065: 'stream' : 선언되지 않은 식별자입니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusMetafile.h(200): error C2275: 'HDC' : 이 형식을 식으로 잘못 사용했습니다.

1>          C:\Program Files (x86)\Windows Kits\8.1\Include\shared\windef.h(80) : 'HDC' 선언을 참조하십시오.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusMetafile.h(200): error C2146: 구문 오류 : ')'이(가) 'referenceHdc' 식별자 앞에 없습니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusMetafile.h(200): error C2761: '{ctor}' : 멤버 함수를 재선언할 수 없습니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusMetafile.h(203): error C2059: 구문 오류 : ')'

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusMetafile.h(204): error C2143: 구문 오류 : ';'이(가) '{' 앞에 없습니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusMetafile.h(204): error C2447: '{' : 함수 헤더가 없습니다. 이전 스타일의 형식 목록입니까?

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusMetafile.h(216): error C2065: 'IStream' : 선언되지 않은 식별자입니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusMetafile.h(216): error C2065: 'stream' : 선언되지 않은 식별자입니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusMetafile.h(217): error C2275: 'HDC' : 이 형식을 식으로 잘못 사용했습니다.

1>          C:\Program Files (x86)\Windows Kits\8.1\Include\shared\windef.h(80) : 'HDC' 선언을 참조하십시오.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusMetafile.h(217): error C2146: 구문 오류 : ')'이(가) 'referenceHdc' 식별자 앞에 없습니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusMetafile.h(217): error C2761: '{ctor}' : 멤버 함수를 재선언할 수 없습니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusMetafile.h(222): error C2059: 구문 오류 : ')'

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusMetafile.h(223): error C2143: 구문 오류 : ';'이(가) '{' 앞에 없습니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusMetafile.h(223): error C2447: '{' : 함수 헤더가 없습니다. 이전 스타일의 형식 목록입니까?

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusMetafile.h(235): error C2065: 'IStream' : 선언되지 않은 식별자입니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusMetafile.h(235): error C2065: 'stream' : 선언되지 않은 식별자입니다.

1>c:\program files (x86)\windows kits\8.1\include\um\GdiplusMetafile.h(236): error C2275: 'HDC' : 이 형식을 식으로 잘못 사용했습니다.



조냉 멘붕상태와...

아 MFC 환경에서 작업해야 하나를 고민하고...검색을 시도..역시 답은 있었음

아래는 발취한 내용임..


MFC를 사용하지 않는 환경에서는 stdafx.h 에서 windows.h 를 포함시키는데 이런 식으로 한다.


1
2
#define WIN32_LEAN_AND_MEAN
#include <windows.h>


WIN32_LEAN_AND_MEAN 를 정의하고 나서 windows.h 를 포함시키면 아래와 같은 내용이 빠지게 된다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <cderr.h>
#include <dde.h>
#include <ddeml.h>
#include <dlgs.h>
#include <lzexpand.h>
#include <mmsystem.h>
#include <nb30.h>
#include <rpc.h>
#include <shellapi.h>
#include <winperf.h>
#include <winsock.h>
#include <wincrypt.h>
#include <winefs.h>
#include <winscard.h>
#include <winspool.h>
#include <ole2.h>
#include <commdlg.h>


문제는 여기에서 발생한다.
그렇다고 WIN32_LEAN_AND_MEAN를 막아버리기엔 쓰잘데기없는 기능들이 너무 많아진다.
하나씩 포함해 보면서 테스트해보면 알겠지만 저 중에서 ole2.h 하나만 있으면 해결된다.


즉 MFC없는 환경에서는 이렇게 해 주어야 한다.   <--- 이 포스팅을 쓴 목적이다 :)

1
2
3
4
#include <ole2.h>
#include <GdiPlus.h>
using namespace Gdiplus;
#pragma comment(lib, "gdiplus.lib")




즉 ole2.h 파일을 include 하면 끝~


저런분들의 포스팅이 없었다면 무한 삽질과..그냥 MFC 환경에서 작업했을듯..ㅠㅠ


정보공유를 감사드립니다.



  --- 정보는 공유되어야 한다 쭈욱~




반응형

댓글