VC6.0MFC下使用GDI++编译链接通不过的解决方案之一(syntax error : identifier 'Count')
在写那个CSDN博文提取的时候因为要显示用户的头像在对话框上面,自然想到的就是使用大名鼎鼎的GDI+了,但是在我准备使用gdi库,加入头文件,引入lib之后,引发的错误吓了我一跳!32个错误。后面根据有人的博文看到要在stdafx里面写成如下,错误减少到16个
#ifndef ULONG_PTR#define ULONG_PTR unsigned long*#include "GdiPlus.h"using namespace Gdiplus;#endif#pragma comment(lib,"gdiplus.lib")
16个错误:简直不敢相信,因为我在另外一个vc6.0的工程里面使用的是同样的代码(仅仅是包含头文件和引入库)却没有一点错误,
苦苦的百度+Google关键字“GDI+ error C2061: syntax error : identifier 'Count' ”还是没有找到答案,在一些技术群里面讨论了很久,有的说vc6.0太老了
我有点不相信,因为我有个从别人那里拷贝来的工程已经通过编译链接了,只好继续尝试各种方法
后来一想,因为要使用gdi+库的话,总是要设置一下IDE路径,我看了一下我的路径设置,如下,
好吧,有人说VC6.0太老了也许对太新的SDK里面GDI+支持不好,所以我就重新下载了一个GDIPlus.zip解压在
D:\Program Files\Microsoft Visual Studio\VC98\GDIPlus
修改路径设置如下,将我们自己的GDI放在上面,而不是替换SDK的路径
后来转念一想,为什么有个工程又可以在不修改路径的情况通过编译链接呢,
我的猜想是,因为开始的时候那个工程已经在别人机子上编译好了,再在我机子上编译的话,gdi+那部分就不会再引入我机子上的gdi+里面的(联系pch的作用,将外部框架的头文件编译好了)
便于他人检索,贴出错误提示,有什么不对的地方,欢迎留言指正
vc6.0支持的gdi+下载地址http://download.csdn.net/detail/lilien1010/4449349
d:\program files\microsoft sdks\windows\v6.0a\include\gdiplustypes.h(744) : error C2061: syntax error : identifier 'Count'd:\program files\microsoft sdks\windows\v6.0a\include\gdiplustypes.h(744) : error C2146: syntax error : missing ';' before identifier 'BYTE'd:\program files\microsoft sdks\windows\v6.0a\include\gdiplusheaders.h(196) : error C2061: syntax error : identifier '__out_ecount'd:\program files\microsoft sdks\windows\v6.0a\include\gdiplusflat.h(2347) : error C2061: syntax error : identifier '__out_bcount'd:\program files\microsoft sdks\windows\v6.0a\include\gdiplusflat.h(2355) : error C2061: syntax error : identifier '__out_bcount'd:\program files\microsoft sdks\windows\v6.0a\include\gdiplusflat.h(2388) : error C2061: syntax error : identifier '__out_ecount'd:\program files\microsoft sdks\windows\v6.0a\include\gdiplusfontfamily.h(123) : error C2065: '__out_ecount' : undeclared identifierd:\program files\microsoft sdks\windows\v6.0a\include\gdiplusfontfamily.h(123) : error C2146: syntax error : missing ')' before identifier 'LPWSTR'd:\program files\microsoft sdks\windows\v6.0a\include\gdiplusfontfamily.h(123) : error C2433: 'GetFamilyName' : 'inline' not permitted on data declarationsd:\program files\microsoft sdks\windows\v6.0a\include\gdiplusfontfamily.h(123) : error C2350: 'FontFamily::GetFamilyName' is not a static memberd:\program files\microsoft sdks\windows\v6.0a\include\gdiplusfontfamily.h(123) : error C2440: 'initializing' : cannot convert from 'int' to 'enum Gdiplus::Status' Conversion to enumeration type requires an explicit cast (static_cast, C-style cast or function-style cast)d:\program files\microsoft sdks\windows\v6.0a\include\gdiplusfontfamily.h(125) : error C2059: syntax error : ')'d:\program files\microsoft sdks\windows\v6.0a\include\gdiplusfontfamily.h(126) : error C2143: syntax error : missing ';' before '{'d:\program files\microsoft sdks\windows\v6.0a\include\gdiplusfontfamily.h(126) : error C2447: missing function header (old-style formal list?)d:\program files\microsoft sdks\windows\v6.0a\include\gdiplusimagecodec.h(37) : error C2660: 'GdipGetImageDecoders' : function does not take 3 parametersd:\program files\microsoft sdks\windows\v6.0a\include\gdiplusimagecodec.h(56) : error C2660: 'GdipGetImageEncoders' : function does not take 3 parameters