问题描述:

在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. 从入门到放弃之IO

    浅说IO 学到现在利用过的特殊符号不少组合起来很多都有让人眼前一亮的用法,在这里先聊聊I/O的一些相关知识. 本文开始之前先介绍一下需要知道的一些小知识和需要注意的地方. 在linux中也是有优先级的 ...

  2. 使用PHPExcel-1.8实现导入

    //使用PHPExcel-1.8实现导入(下载PHPExcel-1.8):导入excel 后缀名必须是.xls1.<form method="post" action=&qu ...

  3. Appium python自动化测试系列之页面滑动原理讲解(十)

    10.1.1 页面滑动原理分析 在页面滑动查找章节我们就讲了滑动的知识点,只是不知道大家是否有认真练习以及去理解,如果你认真练习.理解了那么我相信这一章节的东西不用看也能够完成,下面我们还是简单分析一 ...

  4. CSS基础:基础和语法

    **CSS语法** CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明.选择器通常是您需要改变样式的 HTML 元素.```selector {declaration1; declarati ...

  5. Jni中C++和Java的参数传递(转)

    如何使用JNI的一些基本方法和过程在网上多如牛毛,如果你对Jni不甚了解,不知道Jni是做什么的,如何建立一个基本的jni程序,或许可以参考下面下面这些文章:利用VC++6.0实现JNI的最简单的例子 ...

  6. 用编写一个简单的记事本(C#实现)

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  7. CodeForces 11D(状压DP 求图中环的个数)

    Given a simple graph, output the number of simple cycles in it. A simple cycle is a cycle with no re ...

  8. backface-visibility 3D修复

    backface-visibility  是作用于 3D transform 时候   默认是   backface-visibility: hidden;   当一个元素3D变换的时候,会立即看到背 ...

  9. Webpack 入门教程

    Webpack 是一个前端资源加载/打包工具.它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源. 本章节基于 Webpack3.0 测试通过. 从图中我们可以看出,W ...

  10. 微信公众平台快速开发框架 For Core 2.0 beta –JCSoft.WX.Core 5.2.0 beta发布

    写在前面 最近比较忙,都没有好好维护博客,今天拿个半成品来交代吧. 记不清上次关于微信公众号快速开发框架(简称JCWX)的更新是什么时候了,自从更新到支持.Net Framework 4.0以后基本上 ...