问题描述:

在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很多。的更多相关文章

  1. MFC中release版本和debug版本区别

    最近MFC写了个程序,生成release版,原来正常,后来删掉了些控件再编译运行,结果竟然报内存读写错误,debug却是正常的.后来将“Project   Settings”   中   “C++/C ...

  2. GDI+中发生一般性错误的解决办法(转帖)

    今天在开发.net引用程序中,需要System.Drawing.Image.Save 创建图片,debug的时候程序一切正常,可是发布到IIS后缺提示出现“GDI+中发生一般性错误”的异常.于是开始“ ...

  3. Release 版本和 Debug 版本

    什么是 Release 版本.Debug 版本? bug-缺陷,程序故障.而debug指的是排除缺陷,显然这个模式是面向开发者的. 而release是满足发布所用. Debug 和 Release,在 ...

  4. 【转】GDI+中发生一般性错误的解决办法

    今天在开发.net引用程序中,需要System.Drawing.Image.Save 创建图片,debug的时候程序一切正常,可是发布到IIS后缺提示出现“GDI+中发生一般性错误”的异常. 于是开始 ...

  5. GDI+中发生一般性错误的解决办法(转)

    今天在开发.net引用程序中,需要System.Drawing.Image.Save 创建图片,debug的时候程序一切正常,可是发布到IIS后缺提示出现"GDI+中发生一般性错误" ...

  6. GDI+中发生一般性错误的解决办法(转载)

    今天在开发.net引用程序中,需要System.Drawing.Image.Save 创建图片,debug的时候程序一切正常,可是发布到IIS后缺提示出现"GDI+中发生一般性错误" ...

  7. GDI+ 中发生一般性错误。

    GDI+ 中发生一般性错误. “/wechat”应用程序中的服务器错误. GDI+ 中发生一般性错误. 说明: 执行当前 Web 请求期间,出现未经处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及 ...

  8. [转载]GDI+中发生一般性错误

    注:第一次写博客,把自己遇到的问题和收集的资料记录在博客上.在开发.NET应用中,使用 System.Drawing.Image.Save 方法而导致“GDI+ 中发生一般性错误”的发生,通常有以下三 ...

  9. GDI+中发生一般性错误(转载)

    在开发.NET应用中,使用 System.Drawing.Image.Save 方法而导致“GDI+ 中发生一般性错误”的发生,通常有以下三种原因:1. 相应的帐户没有写权限.解决方法:赋予 NETW ...

  10. GDI+ 中发生一般性错误(在 OutputStream 中保存 PNG 格式图像时遇到的问题)

    在将图片以 PNG 格式保存至 Response.OutputStream 时,会碰到如下错误: GDI+ 中发生一般性错误. 原因: 在写 PNG 格式的图像时,指针需要在存储的位置来回移动.而 R ...

随机推荐

  1. 脚本div实现拖放功能

    脚本div实现拖放功能 网页上有很多拖曳的操作,比如拖动树状列表,可拖曳的图片等. 1.原生拖放实现 <!doctype html> <html lang="en" ...

  2. DNS over TLS到底有多牛?你想知道的都在这儿

    DNS over TLS,让电信.移动等各种ISP无法监视你的浏览轨迹...... SSL证书有助于客户端浏览器和网站服务器之间的加密连接. 这意味着在连接期间,所有的通信和活动都被遮蔽. 但通常意义 ...

  3. LeetCode 152. Maximum Product Subarray (最大乘积子数组)

    Find the contiguous subarray within an array (containing at least one number) which has the largest ...

  4. 媲美jQuery的JS框架----AngularJS(二)

    前言 对于AngularJS什么,小编在这就不多做介绍了.大家可以看小编的上一篇博客. 言归正传,小编在上一篇博客中介绍了AngularJS中的指令.表达式还有非常实用的三种服务.接下来,带大家看一看 ...

  5. TreeView简单的动态加载数据

    简单的小记录,省得去看控件属性详情了,基本常用的属于就几个 先是判断根节点是否存在控件中,如果不存在则创建,之前要添加了节点同样的方法 把根节点传到子节点的方法中,再判断是否在根节点里存在子节点,如果 ...

  6. IIS部署网站时常见问题解决

    首先服务器上安装IIS和Framework\v4.0 一.打开iis服务管理器 左侧目录中选择网站右键,选择添加网站 填写网站名称.选择项目存放的路径.ip地址和端口 VS用的是4.0,iis中网站也 ...

  7. 使用jQuery中trigger()方法自动触发事件

    一.常用事件 在页面加载完成时  自动触发input的点击事件,在移动端可以实现自动弹出输入法,获得焦点 $("input").trigger("click") ...

  8. C#与lua相互调用

    Lua是一种很好的扩展性语言,Lua解释器被设计成一个很容易嵌入到宿主程序的库.LuaInterface则用于实现Lua和CLR的混合编程. (一)C#调用Lua 测试环境:在VS2015中建一个C# ...

  9. 工具:Entity Framework Profiler

    使用方式: 1.项目中添加引用:EntityFrameworkProfiler.Appender 2.应用程序启动方法中添加下面一行代码: HibernatingRhinos.Profiler.App ...

  10. 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 ...