留下點回憶
這個問題我已經遇到很多次了,只是沒有記性,在這里記錄一下。這個問題只針對VC。問題是:在調用DLL的程序中刪除DLL中分配的BUFFER會CRASH。原因:由于在VC編譯的時候可以選擇多種不同的運行時庫,如果調用DLL的程序與DLL的這個選項不匹配(例如:DLL采用多線程DEBUG版本,而調用程序采用多線程DLL版本),那么就會出現上面的情況。解決辦法:很簡單,只需要讓兩種庫為同一種就可以了。具體設置步驟如下:菜單:項目-》設置-》C/C++-》代碼生成-》運行時庫
posted on 2006-06-13 09:43 笨笨 閱讀(563) 評論(4) 編輯 收藏 引用
解決辦法應該是誰分配誰釋放 既然dll提供了獲得緩沖的函數,那么就應該提供一個釋放緩沖的函數。 回復 更多評論
你說的很有道理,但有的時候,你從DLL得到一個BUFFER,然后你要使用他,但DLL根本不知道你什么時候釋放。當然我們可以在DLL中提供一個API來專門用于釋放BUFFER,哈哈,不過總有不方便的地方。 而且如果采用這種辦法,我們根本不知道是采用的庫導致刪除BUFFER出問題的這個知識點. 回復 更多評論
我的做法是,不管寫啥都用MT就OK了。 回復 更多評論
呵呵,你調式怎么辦?所以還必須區別對待 回復 更多評論
Powered by: C++博客 Copyright © 笨笨