日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時間:2024/1/17 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在MFC框架下使用osg报内存泄露的解决办法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

作者:朱金燦
來源:http://blog.csdn.net/clever101/


??????? 最近正在學(xué)習(xí)osg,從osgchina網(wǎng)站下下載了osg的debug版本庫,具體地址為:


OpenSceneGraph-2.8.2預(yù)編譯包(for vs9)下載


??????? 然后建了一個MFC的單文檔程序?qū)懸恍y試代碼,調(diào)試運行了一下,退出時出現(xiàn)大量的內(nèi)存泄露:
......
{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


??????? 開始我吃了一驚,上網(wǎng)搜了一下,找到了一個解決辦法:


Why does my OSG MFC based application show memory leaks


?? 這個網(wǎng)頁上給出的解決辦法是:

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


我按照這個辦法一試,出現(xiàn)了一個鏈接錯誤:
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也加進去了,發(fā)現(xiàn)還是有這個錯誤。于是搜索了一下"error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup",判斷可能是使用字符集不當(dāng)造成的。于是在選項里使用多字節(jié)字符集,附加庫使用mfc90d.lib。重新編譯之后好了,我想是不是因為我的osg的核心庫是基于多字節(jié)字符集生成而造成這個問題的呢?或許只有用unicode版本的osg庫一試才能知道。

?

?????早上起來,想到了一個測試辦法,就是建一個單文檔程序,采用unicode字符集編譯,附加庫添加mfc90ud.lib,發(fā)現(xiàn)也會出現(xiàn)error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup的錯誤,但采用多字節(jié)字符集沒有問題。看來并不是osg庫的問題。

?

?



轉(zhuǎn)載于:https://www.cnblogs.com/lanzhi/archive/2010/06/27/6471029.html

總結(jié)

以上是生活随笔為你收集整理的在MFC框架下使用osg报内存泄露的解决办法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。