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 ...
随机推荐
- 脚本div实现拖放功能
脚本div实现拖放功能 网页上有很多拖曳的操作,比如拖动树状列表,可拖曳的图片等. 1.原生拖放实现 <!doctype html> <html lang="en" ...
- DNS over TLS到底有多牛?你想知道的都在这儿
DNS over TLS,让电信.移动等各种ISP无法监视你的浏览轨迹...... SSL证书有助于客户端浏览器和网站服务器之间的加密连接. 这意味着在连接期间,所有的通信和活动都被遮蔽. 但通常意义 ...
- LeetCode 152. Maximum Product Subarray (最大乘积子数组)
Find the contiguous subarray within an array (containing at least one number) which has the largest ...
- 媲美jQuery的JS框架----AngularJS(二)
前言 对于AngularJS什么,小编在这就不多做介绍了.大家可以看小编的上一篇博客. 言归正传,小编在上一篇博客中介绍了AngularJS中的指令.表达式还有非常实用的三种服务.接下来,带大家看一看 ...
- TreeView简单的动态加载数据
简单的小记录,省得去看控件属性详情了,基本常用的属于就几个 先是判断根节点是否存在控件中,如果不存在则创建,之前要添加了节点同样的方法 把根节点传到子节点的方法中,再判断是否在根节点里存在子节点,如果 ...
- IIS部署网站时常见问题解决
首先服务器上安装IIS和Framework\v4.0 一.打开iis服务管理器 左侧目录中选择网站右键,选择添加网站 填写网站名称.选择项目存放的路径.ip地址和端口 VS用的是4.0,iis中网站也 ...
- 使用jQuery中trigger()方法自动触发事件
一.常用事件 在页面加载完成时 自动触发input的点击事件,在移动端可以实现自动弹出输入法,获得焦点 $("input").trigger("click") ...
- C#与lua相互调用
Lua是一种很好的扩展性语言,Lua解释器被设计成一个很容易嵌入到宿主程序的库.LuaInterface则用于实现Lua和CLR的混合编程. (一)C#调用Lua 测试环境:在VS2015中建一个C# ...
- 工具:Entity Framework Profiler
使用方式: 1.项目中添加引用:EntityFrameworkProfiler.Appender 2.应用程序启动方法中添加下面一行代码: HibernatingRhinos.Profiler.App ...
- Visual Assist X 10.6.1830.0 常用快捷键
Visual Assist X 10.6.1830.0 常用快捷键 1.Alt + G: 在定义与声明之间互跳. 2.Alt + O: 在.h与.cpp之间互跳.(O是字母O,不是数字零) 3.Alt ...