關於動態庫中在release下建立資源崩潰的問題。

2021-08-01 14:25:57 字數 665 閱讀 8519

相信大家在學習動態庫(尤其是mfc動態庫)的初期,肯定會遇到在dll中建立資源崩潰的問題。今天小白就遇到了這個問題,搞了好些日子,終於想明白了是怎麼回事,順便來記錄一下。

造成這類崩潰錯誤的原因有很多種,比如,資源切換,id錯亂等。當然這些問題都比較好解決,一般加上

這些函式,將資源切換一下就會解決。

我這個問題所牽扯的有點亂了,首先說一下我的**結構:主程式動態載入dll(mfc規則dll),dll中又靜態載入dll(mfc擴充套件dll),這個dll中又載入了靜態庫lib。

其次,我這個問題是由於工程設定的問題:由於公司必須要求,使用mfc設定為:1、在共享dll中使用mfc2、執行庫設定為:多執行緒除錯dll3、unicode編碼。在這個設定中,我沒有意識到第二個release和debug下的設定是不一樣的。在debug下位多執行緒除錯dll,在release下為多執行緒dll。因此我不小心,在release中也設定成了多執行緒除錯dll(mdd)。這樣子在生成lib時,系統就會預設產生巨集_dubug,然後在倒數第二個mfc擴充套件dll中,繼續錯下去....導致release下卻定義了_debug巨集,導致最後建立資源對話方塊時,系統執行錯亂。導致在release下崩潰。

所以解決辦法就是:一定要注意在使用共享dll中使用mfc時,執行庫在debug下為多執行緒除錯dll,在release下為多執行緒dll。

在release下尋找程式崩潰原因

在windows平台下用c 開發應用程式,最不想見到的情況恐怕就是程式崩潰,而要想解決引起問題的bug,最困難的應該就是除錯release版本了。因為release版本來就少了很多除錯資訊,更何況一般都是發布出去由使用者使用,crash的現場很難保留和重現。本文將給出幾個解決方案,完成對releas...

關於VS下動態庫和靜態庫

首先 對於我這種懶 智商 人 不夠用 來說,凡是不能看一眼就會用的東西,都是不夠人性化的,所以,為智商充值,mark一下。靜態庫 暫不能科學上網,給出某科描述 靜態庫是指在我們的應用中,有一些公共 是需要反覆使用,就把這些 編譯為 庫 檔案 在鏈結步驟中,聯結器將從庫檔案取得所需的 複製到生成的可執...

關於在MFC工程中呼叫MFC常規動態庫

使用mfc常規型動態鏈結庫 1 將生成的動態鏈結庫檔案 regudll.dll 和庫檔案 regudll.lib 拷貝到要呼叫的工程dlltest的目錄下,再將 regudll.lib 檔案加入到呼叫工程dlltest中.2 在呼叫工程testdlg.h中加入如下 宣告動態鏈結庫函式 define ...