GDI+ 应用,Release没有错误,Debug很多。
问题描述:
在VC6环境中,一个界面工程利用了GDI+的一些库,Release模式下编译、运行无误,但在Debug模式下就会报告错误。
xxx.cpp D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\crtdbg.h() : error C2833: 'operator DEBUG_NEW' is not a recognized operator or type
D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\crtdbg.h() : error C2059: syntax error : 'newline'
D:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE\afx.h() : error C2833: 'operator DEBUG_NEW' is not a recognized operator or type
D:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE\afx.h() : error C2059: syntax error : 'newline'
D:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE\afx.h() : error C2238: unexpected token(s) preceding ';'
D:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE\afx.h() : error C2833: 'operator DEBUG_NEW' is not a recognized operator or type
D:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE\afx.h() : error C2059: syntax error : 'newline'
D:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE\afx.h() : error C2238: unexpected token(s) preceding ';'
D:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE\afx.h() : error C2833: 'operator DEBUG_NEW' is not a recognized operator or type
D:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE\afx.h() : error C2059: syntax error : 'newline'
D:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE\afx.h() : error C2238: unexpected token(s) preceding ';'
D:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE\afx.h() : error C2833: 'operator DEBUG_NEW' is not a recognized operator or type
D:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE\afx.h() : error C2059: syntax error : 'newline'
D:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE\afxtls_.h() : error C2059: syntax error : 'string'
D:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE\afxtls_.h() : error C2091: function returns function
D:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE\afxtls_.h() : error C2802: static member 'operator new' has no formal parameters
D:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE\afxtls_.h() : error C2333: 'new' : error in function declaration; skipping function body
D:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE\afxtls_.h() : error C2059: syntax error : 'string'
D:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE\afxtls_.h() : error C2091: function returns function
D:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE\afxtls_.h() : error C2802: static member 'operator new' has no formal parameters
D:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE\afxtls_.h() : error C2059: syntax error : 'string'
D:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE\afxtls_.h() : error C2091: function returns function
D:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE\afxtls_.h() : error C2556: 'void *(__cdecl *__stdcall CNoTrackObject::operator new(void))(unsigned int,const char *,int)' : overloaded function differs only by return type from 'void *(__c
decl *__stdcall CNoTrackObject::operator new(void))(unsigned int)'
D:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE\afxtls_.h() : see declaration of 'new'
D:\ debug\UI\../ui/gdi/Includes/GdiplusBase.h() : error C2059: syntax error : 'string'
D:\ debug\UI\../ui/gdi/Includes/GdiplusBase.h() : error C2091: function returns function
D:\ debug\UI\../ui/gdi/Includes/GdiplusBase.h() : error C2802: static member 'operator new' has no formal parameters
D:\ debug\UI\../ui/gdi/Includes/GdiplusBase.h() : error C2333: 'new' : error in function declaration; skipping function body
D:\ debug\UI\../ui/gdi/Includes/GdiplusBase.h() : error C2059: syntax error : 'string'
D:\ debug\UI\../ui/gdi/Includes/GdiplusBase.h() : error C2090: function returns array
D:\ debug\UI\../ui/gdi/Includes/GdiplusBase.h() : error C2059: syntax error : 'return'
D:\ debug\UI\../ui/gdi/Includes/GdiplusBase.h() : error C2238: unexpected token(s) preceding ';'
D:\ debug\UI\../ui/gdi/Includes/GdiplusBase.h() : error C2143: syntax error : missing ';' before '}'
D:\ debug\UI\../ui/gdi/Includes/GdiplusHeaders.h() : error C2504: 'GdiplusBase' : base class undefined
D:\ debug\UI\../ui/gdi/Includes/GdiplusHeaders.h() : error C2504: 'GdiplusBase' : base class undefined
D:\ debug\UI\../ui/gdi/Includes/GdiplusHeaders.h() : error C2504: 'GdiplusBase' : base class undefined
D:\ debug\UI\../ui/gdi/Includes/GdiplusHeaders.h() : error C2504: 'GdiplusBase' : base class undefined
D:\ debug\UI\../ui/gdi/Includes/GdiplusHeaders.h() : error C2504: 'GdiplusBase' : base class undefined
D:\ debug\UI\../ui/gdi/Includes/GdiplusHeaders.h() : error C2504: 'GdiplusBase' : base class undefined
D:\ debug\UI\../ui/gdi/Includes/GdiplusHeaders.h() : error C2504: 'GdiplusBase' : base class undefined
D:\ debug\UI\../ui/gdi/Includes/GdiplusImageAttributes.h() : error C2504: 'GdiplusBase' : base class undefined
D:\ debug\UI\../ui/gdi/Includes/GdiplusMatrix.h() : error C2504: 'GdiplusBase' : base class undefined
D:\ debug\UI\../ui/gdi/Includes/GdiplusBrush.h() : error C2504: 'GdiplusBase' : base class undefined
D:\ debug\UI\../ui/gdi/Includes/GdiplusPen.h() : error C2504: 'GdiplusBase' : base class undefined
D:\ debug\UI\../ui/gdi/Includes/GdiplusStringFormat.h() : error C2504: 'GdiplusBase' : base class undefined
D:\ debug\UI\../ui/gdi/Includes/GdiplusPath.h() : error C2504: 'GdiplusBase' : base class undefined
D:\ debug\UI\../ui/gdi/Includes/GdiplusPath.h() : error C2504: 'GdiplusBase' : base class undefined
D:\ debug\UI\../ui/gdi/Includes/GdiplusLineCaps.h() : error C2661: 'new' : no overloaded function takes parameters
D:\ debug\UI\../ui/gdi/Includes/GdiplusGraphics.h() : error C2504: 'GdiplusBase' : base class undefined
D:\ debug\UI\../ui/gdi/Includes/GdiplusRegion.h() : error C2661: 'new' : no overloaded function takes parameters
D:\ debug\UI\../ui/gdi/Includes/GdiplusRegion.h() : error C2661: 'new' : no overloaded function takes parameters
D:\ debug\UI\../ui/gdi/Includes/GdiplusFontCollection.h() : error C2661: 'new' : no overloaded function takes parameters
D:\ debug\UI\../ui/gdi/Includes/GdiplusFontFamily.h() : error C2661: 'new' : no overloaded function takes parameters
D:\ debug\UI\../ui/gdi/Includes/GdiplusFont.h() : error C2661: 'new' : no overloaded function takes parameters
D:\ debug\UI\../ui/gdi/Includes/GdiplusBitmap.h() : error C2661: 'new' : no overloaded function takes parameters
D:\ debug\UI\../ui/gdi/Includes/GdiplusBitmap.h() : error C2661: 'new' : no overloaded function takes parameters
D:\ debug\UI\../ui/gdi/Includes/GdiplusBitmap.h() : error C2661: 'new' : no overloaded function takes parameters
D:\ debug\UI\../ui/gdi/Includes/GdiplusBitmap.h() : error C2661: 'new' : no overloaded function takes parameters
D:\ debug\UI\../ui/gdi/Includes/GdiplusBitmap.h() : error C2661: 'new' : no overloaded function takes parameters
D:\ debug\UI\../ui/gdi/Includes/GdiplusBitmap.h() : error C2661: 'new' : no overloaded function takes parameters
D:\ debug\UI\../ui/gdi/Includes/GdiplusBitmap.h() : error C2661: 'new' : no overloaded function takes parameters
D:\ debug\UI\../ui/gdi/Includes/GdiplusBitmap.h() : error C2661: 'new' : no overloaded function takes parameters
D:\ debug\UI\../ui/gdi/Includes/GdiplusBitmap.h() : error C2661: 'new' : no overloaded function takes parameters
D:\ debug\UI\../ui/gdi/Includes/GdiplusBitmap.h() : error C2661: 'new' : no overloaded function takes parameters
D:\ debug\UI\../ui/gdi/Includes/GdiplusBitmap.h() : error C2661: 'new' : no overloaded function takes parameters
D:\ debug\UI\../ui/gdi/Includes/GdiplusBitmap.h() : error C2661: 'new' : no overloaded function takes parameters
D:\ debug\UI\../ui/gdi/Includes/GdiplusBitmap.h() : error C2661: 'new' : no overloaded function takes parameters
D:\ debug\UI\../ui/gdi/Includes/GdiPlus.h() : error C2143: syntax error : missing ';' before '}'
D:\ debug\UI\../ui/gdi/Includes/GdiPlus.h() : error C2143: syntax error : missing ';' before '}'
D:\ debug\UI\../ui/gdi/Includes/GdiPlus.h() : error C2143: syntax error : missing ';' before '}'
D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\new() : error C2059: syntax error : 'string'
D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\new() : error C2091: function returns function
D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\new() : error C2809: 'operator new' has no formal parameters
D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\new() : error C2059: syntax error : 'string'
D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\new() : error C2091: function returns function
D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\new() : error C2556: 'void *(__cdecl *__cdecl operator new(void))(unsigned int,const struct std::nothrow_t &)' : overloaded function differs only by return type from 'void *(__cdecl *__cdecl op
erator new(void))(unsigned int)'
D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\new() : see declaration of 'new'
D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\memory() : error C2059: syntax error : 'string'
D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\memory() : error C2091: function returns function
D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\memory() : error C2784: 'void *(__cdecl *__cdecl operator new(void))(unsigned int,class std::allocator<`template-parameter257'> &)' : could not deduce template argument for 'void *(__cdecl *)(u
nsigned int,class std::allocator<_Ty> &)' from 'void *(__cdecl *)(unsigned int)'
D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\memory() : error C2785: 'void *(__cdecl *__cdecl operator new(void))(unsigned int,class std::allocator<`template-parameter257'> &)' and 'void *(__cdecl *__cdecl operator new(void))(unsigned int
)' have different return types
D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\memory() : see declaration of 'new'
D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\memory() : error C2809: 'operator new' has no formal parameters
D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\memory() : error C2954: template definitions cannot nest
D:\ debug\UI\SkinManager.cpp() : error C2661: 'new' : no overloaded function takes parameters
执行 cl.exe 时出错.
Creating browse info file...
.exe - error(s), warning(s)
错误提示
出错原因:
错误提示的那个CPP文件中,将这部分 宏定义的头部去掉。 #ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif /*
因为此时DEBUG版本中的new 已经被另外一个宏定义过了。Debug下系统调用new的时候果然不是听从基类GdiplusBase中new的,
而是Afx.h中那里的new(这时的确有三个参数),按理系统编译到这里应该提示出错在这行:*/
#ifndef _GDIPLUSBASE_H
#define _GDIPLUSBASE_H class GdiplusBase
{
public:
void (operator delete)(void* in_pVoid)
{
DllExports::GdipFree(in_pVoid);
}
void* (operator new)(size_t in_size)
{
return DllExports::GdipAlloc(in_size);
}
void (operator delete[])(void* in_pVoid)
{
DllExports::GdipFree(in_pVoid);
}
void* (operator new[])(size_t in_size)
{
return DllExports::GdipAlloc(in_size);
}
}; #endif
GdiplusBase.h
跟踪错误:
1、到达AFX.H的
void* PASCAL operator new(size_t nSize);
void* PASCAL operator new(size_t, void* p);
void* AFX_CDECL operator new(size_t nSize, LPCSTR lpszFileName, int nLine); // non-_DEBUG_ALLOC version that assume everything is OK
#define DEBUG_NEW new
再加上系统自动生成的下面两行:
#ifdef _DEBUG
#define new DEBUG_NEW
即Debug下系统调用new的时候果然不是听从基类GdiplusBase中new的,而是Afx.h中那里的new(这时的确有三个参数),按理系统编译到这里应该提示出错在这行:
void* AFX_CDECL operator new(size_t nSize, LPCSTR lpszFileName, int nLine);
但它下面这行代码:#define DEBUG_NEW new(THIS_FILE, __LINE__)使得出错行提示又在我的代码中调用new的这行:
m_instance = new UIManger(); //采用单例模式
系统将三个参数的默认new 关键字的参数个数。
结果:将上述删除后,Debug就可通过。
附述:
发现很多下载的用Gdi+的例子在Debug下都有下面这样的错误:
gdiplus.lib(imagingguds.obj) : fatal error LNK1103: debugging information corrupt; recompile module
出现环境 xp sp2 + 最新 sdk + vc6 +vc7
出现此错误 位 vc6 下编译,问题出来 lib 和 link.exe 版本不合;
查看 lib 设置,将 sdk 移动到最后, 编译通过。
看来 xp 的 sdk 已经默认的向 vc.net 靠拢了
链接:http://bbs.csdn.net/topics/80358847
GDI+ 应用,Release没有错误,Debug很多。的更多相关文章
- MFC中release版本和debug版本区别
最近MFC写了个程序,生成release版,原来正常,后来删掉了些控件再编译运行,结果竟然报内存读写错误,debug却是正常的.后来将“Project Settings” 中 “C++/C ...
- GDI+中发生一般性错误的解决办法(转帖)
今天在开发.net引用程序中,需要System.Drawing.Image.Save 创建图片,debug的时候程序一切正常,可是发布到IIS后缺提示出现“GDI+中发生一般性错误”的异常.于是开始“ ...
- Release 版本和 Debug 版本
什么是 Release 版本.Debug 版本? bug-缺陷,程序故障.而debug指的是排除缺陷,显然这个模式是面向开发者的. 而release是满足发布所用. Debug 和 Release,在 ...
- 【转】GDI+中发生一般性错误的解决办法
今天在开发.net引用程序中,需要System.Drawing.Image.Save 创建图片,debug的时候程序一切正常,可是发布到IIS后缺提示出现“GDI+中发生一般性错误”的异常. 于是开始 ...
- GDI+中发生一般性错误的解决办法(转)
今天在开发.net引用程序中,需要System.Drawing.Image.Save 创建图片,debug的时候程序一切正常,可是发布到IIS后缺提示出现"GDI+中发生一般性错误" ...
- GDI+中发生一般性错误的解决办法(转载)
今天在开发.net引用程序中,需要System.Drawing.Image.Save 创建图片,debug的时候程序一切正常,可是发布到IIS后缺提示出现"GDI+中发生一般性错误" ...
- GDI+ 中发生一般性错误。
GDI+ 中发生一般性错误. “/wechat”应用程序中的服务器错误. GDI+ 中发生一般性错误. 说明: 执行当前 Web 请求期间,出现未经处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及 ...
- [转载]GDI+中发生一般性错误
注:第一次写博客,把自己遇到的问题和收集的资料记录在博客上.在开发.NET应用中,使用 System.Drawing.Image.Save 方法而导致“GDI+ 中发生一般性错误”的发生,通常有以下三 ...
- GDI+中发生一般性错误(转载)
在开发.NET应用中,使用 System.Drawing.Image.Save 方法而导致“GDI+ 中发生一般性错误”的发生,通常有以下三种原因:1. 相应的帐户没有写权限.解决方法:赋予 NETW ...
- GDI+ 中发生一般性错误(在 OutputStream 中保存 PNG 格式图像时遇到的问题)
在将图片以 PNG 格式保存至 Response.OutputStream 时,会碰到如下错误: GDI+ 中发生一般性错误. 原因: 在写 PNG 格式的图像时,指针需要在存储的位置来回移动.而 R ...
随机推荐
- Yii2之组件的注册与创建
今天本来打算研究一下yii2.0的AR模型的实现原理,然而,计划赶不上变化,突然就想先研究一下yii2.0的数据库组件创建的过程.通过对yii源码的学习,了解了yii组件注册与创建的过程,并发现原来y ...
- struts2类型转换相关问题
一.类型转化错误时,如何处理? 若Action类没有实现ValidationAware接口,在类型转化错误时,struts2会继续调用action方法,将该属性值置为默认值,不报错. 若Action类 ...
- RQPro 公募FOF策略实例——晨星基金筛选和风险平价配置
2017年9月8日,证监会公布首批公募FOF基金名单,标志着公募FOF产品正式落地.FOF(Fund of Funds)是一种通过投资基金,而非直接投资具体证券标的(股票或债券等)来实现分散化资产配置 ...
- web service实例
一.准备工作(以下为本实例使用工具) 1.MyEclipse10.7.1 2.JDK 1.6.0_22 二.创建服务端 1.创建[Web Service Project],命名为[TheService ...
- 机器学习之二:K-近邻(KNN)算法
一.概述 K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一.该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中 ...
- Azkaban 2.5.0 搭建和一些小问题
安装环境: 系统环境: ubuntu-12.04.2-server-amd64 安装目录: /usr/local/ae/ankaban JDK 安装目录: export JAVA_HOME=/usr/ ...
- CSS浮动(Float)(二)
1.什么是浮动:在我们布局的时用到的一种技术,能够方便我们进行布局,通过让元素浮动,我们可以使元素在水平上左右移动,再通过margin属性调整位置 2.浮动的原理:使当前元素脱离普通流,相当于浮动起来 ...
- Problem C: 是否回文数?
Description 定义Data类,有一个int类型的属性.定义其构造函数.setValue函数和isPalindrome函数,其中setValue函数用于设置属性值,isPalindrome用于 ...
- linux中安装Python3.x
首先了解几句Linux命令是必须的.例如 ls, vi, wget, rm, mv, cd, su, sudo, chmod, tar等等一些常用的语句命令是有必要知道它的用法的. 安装Python3 ...
- Linux学习决心书
学习Linux决心计划书 我叫耿长学,来自河南省邓州市,经过老男孩教育运维班5个月学习后,我一定要达到的薪水目标是11000元,为了达到此目标我将采取如下10大行动或方案: 1.每天早上5:30-6: ...