作者:朱金灿
来源:http://blog.csdn.net/clever101/

最近正在学习osg,从osgchina网站下下载了osg的debug版本库,具体地址为:

OpenSceneGraph-2.8.2预编译包(for vs9)下载

然后建了一个MFC的单文档程序写一些测试代码,调试运行了一下,退出时出现大量的内存泄露:
......
{184} normal block at 0x00FB7510, 24 bytes long.
Data: < u u u > 10 75 FB 00 10 75 FB 00 10 75 FB 00 CD CD CD CD
{183} normal block at 0x00FB7150, 896 bytes long.
Data: < > 00 00 00 00 CD CD CD CD CD CD CD CD CD CD CD CD
{181} normal block at 0x00FB70A0, 24 bytes long.
Data: < a > D8 61 15 00 FF FF FF FF 00 00 00 00 00 00 00 00
{180} normal block at 0x00FB6FE0, 128 bytes long.
Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
{179} normal block at 0x00FB6F20, 128 bytes long.
Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
{178} normal block at 0x00FB6E60, 128 bytes long.
Data: < > 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
{137} normal block at 0x00FB6D98, 136 bytes long.
Data: < WC > D8 57 43 10 00 00 00 00 01 00 00 00 00 00 00 00
{135} normal block at 0x00FB6C58, 64 bytes long.
Data: <OpenThread v1.2p> 4F 70 65 6E 54 68 72 65 61 64 20 76 31 2E 32 70

开始我吃了一惊,上网搜了一下,找到了一个解决办法:

Why does my OSG MFC based application show memory leaks

这个网页上给出的解决办法是:

. Goto project settings. In there, make the following changes for theDebug build.
. General->Use of MFC->Use Standard Windows Libraries.
. Add _AFXDLL to C/C++->Preprocessor->Preprocessor Definitions.
. Add mfc80??.lib (in my case it is mfc80ud.lib) as a first dependency or at least before osg libs to Linker->Input->Additional
Dependencies.

我按照这个办法一试,出现了一个链接错误:
1>msvcrtd.lib(crtexew.obj) : error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup
1>E:/OSG Play/Debug/osgSdi.exe : fatal error LNK1120: 1 unresolved externals
1>Build log was saved at "file://e:/OSG Play/osgSdi/Debug/BuildLog.htm"
1> osgSdi - 2 error(s), 0 warning(s)

之前我只是添加了附加库mfc90ud.lib,这下我把msvcrtd.lib也加进去了,发现还是有这个错误。于是搜索了一下"error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup",判断可能是使用字符集不当造成的。于是在选项里使用多字节字符集,附加库使用mfc90d.lib。重新编译之后好了,我想是不是因为我的osg的核心库是基于多字节字符集生成而造成这个问题的呢?或许只有用unicode版本的osg库一试才能知道。

早上起来,想到了一个测试办法,就是建一个单文档程序,采用unicode字符集编译,附加库添加mfc90ud.lib,发现也会出现error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup的错误,但采用多字节字符集没有问题。看来并不是osg库的问题。

转载于:https://www.cnblogs.com/lanzhi/archive/2010/06/27/6471029.html

在MFC框架下使用osg报内存泄露的解决办法相关推荐

  1. android通过BitmapFactory.decodeFile获取图片bitmap报内存溢出的解决办法

    android通过BitmapFactory.decodeFile获取图片bitmap报内存溢出的解决办法 原方法: public static Bitmap getSmallBitmap(Strin ...

  2. 关于MFC框架下的TextOut()函数输出变量的值

    关于MFC框架下的TextOut()函数输出变量的值(int转String类型) 一.TextOut()参数介绍 BOOL TextOut ( //如果函数调用成功,返回TRUE,否则,返回FALSE ...

  3. 基于MFC框架下OpenGL的exe可移植

    以前写了几个MFC框架下的OpenGL小项目,但是移植exe的时候总需要copy很多dll文件,感觉太low,于是今天就抽时间解决了这个问题. 首先 我们了解一下关于MFC的两个运行机制: 一.MFC ...

  4. VC 在经典 MFC 框架下使用真彩色工具栏

    VS2008 sp1 以后有了 BCG 的包,可以使用 CMFCToolbar 来加载真彩色工具栏.但是在经典 MFC 框架下,默认还只是 16 色的工具栏,通过下面的方法就可以加载真彩工具栏了.直接 ...

  5. 【通信协议及编码】实验3:MFC框架下聊天室客户机与服务器程序

    文章目录 一.实验目的 二.实验环境 三.实验内容 一.实验目的 掌握MFC套接字编程方法 借助VS2016的MFC应用程序向导创建程序框架: 从CSocket类派生用户自定义的套接字类: 通过CAr ...

  6. MFC框架下自绘CEdit控件

    前提 MFC中的CEdit控件提供了编辑的功能. 该编辑框是一个自创阔举行,用户可以向里面输入任意类型的文本信息. 那么我们该如何优化控件的显示呢?接下来就介绍下如何继承并重绘CEdit控件. 该控件 ...

  7. oracle lms进程 内存,【案例】Oracle ges resource消耗内存高报错ORA-04031 MOS解决办法...

    天萃荷净 Oracle研究中心案例分析:运维DBA反映Oracle数据库10.2.0.4.12每间隔一段时间就必须重启,运行一断时间报ORA-04031错误oracle ges res cache l ...

  8. ubuntu16.04下安装openssh-server报依赖错误的解决方法

    ubuntu16.04下安装openssh-server报依赖错误的解决方法 参考文章: (1)ubuntu16.04下安装openssh-server报依赖错误的解决方法 (2)https://ww ...

  9. 内存泄漏和内存溢出,解决办法

    1. 内存泄漏和内存溢出,解决办法 1.1 内存泄露 指程序中已动态分配的堆内存由于某种原因未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统奔溃等严重后果. 一次内存泄漏似乎不会有大 ...

最新文章

  1. 最全的MAC端截图工具推荐,寻找适合自己的截图工具
  2. Linux打过cat没有编码,linux系统 终端下 cat中文乱码/vim不乱码 或者 cat不乱码/vim中文乱码...
  3. QML - 小例子 - 文件目录浏览器
  4. Meteor框架创建示例项目todos的问题
  5. atomQQ 笔记 之 列表元素的异步加载
  6. (翻译)按钮的对比色引导用户操作的方式
  7. python机械臂仿真_机械臂 python
  8. 【bzoj3926】[Zjoi20150]诸神眷顾的幻想乡 后缀自动机+trie
  9. 这是关于淘宝的一条重磅消息
  10. java遍历无极树的源码
  11. Android中notifyDataSetInvalidated()和notifyDataSetChanged()
  12. Invalid -Xlog option ‘-Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=3
  13. java正则表达式类_java中正则表达式之Pattern类与Matcher类
  14. SpringBoot+MyBatis项目Dao层最简单写法
  15. Django项目:前后端联调/ModelViewSet
  16. 检测QQ是否开通微信
  17. 40句让你坦露心声的句子
  18. 机器学习以前所未有的方式革新金融和商业
  19. iOS【彻底清空APP缓存】
  20. hbuilderx 小程序分包_很酷的HBuilderX和uni-app,开发一次既能生成小程序又能生成App...

热门文章

  1. php 获取对象中的元素个数组长度,获取php类中的数组长度
  2. python 识别数字字母 训练集_Python 实现训练集、测试集随机划分
  3. mysql code name作为字段_MySQL索引管理及执行计划
  4. codeblock下载
  5. 高薪面试题必备之HashMap 的底层原理
  6. 程序员,别了校园入了江湖
  7. mysql增量备份保留策略_Mysql备份策略-完成备份+增量备份shell
  8. python获取剪切板内容_如何从python中读取(windows)剪贴板中的文本?
  9. 更新json文件_忽略packagelock.json?
  10. webpack:全局变量、图片处理、样式兼容