F-dd-vctools-vc7libs-ship-atlmfc-src-mfc-doctempl-cpp

本人使用MFC輸出一堆資源,出現瞭如下錯誤提示:
Debug assertion Failed!
Program:*****.exe
F:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\doctempl.cpp
line:161


找了好多都沒有辦法解決,下面是我的解決方法:
觸發這個錯誤的原因:
If you static link MFC, the type information will be staticlly linked into the DLL, which means the address returned by RUNTIME_CLASS(CView) will be different from DLL to DLL, so if you call the code with a View object created in another DLL, you will get this error.
如果你是使用MFC靜態鏈接DLL,這就意味這(RUNTIME_CLASS CView)類型從DLL資源中傳回的地址有很大不同。因此如果你試圖在另一個DLL中創建RUNTIME_CLASS 對象就會由此錯誤。
F:\DD不是你本機的目錄,是微軟開發人員的目錄,被寫入到了MFC庫中。


如果使用MFC類,並連接DLL擴展庫,必須確保所有的DLL和你的EXE工程連接的MFC庫版本相同。DLL版本有:靜態鏈接和二進制兼容,DEBUG和Release,ANSI和UICOD,規則和擴展版本等。
這麼多的版本,他們的鏈接和產生的二進制文件都是不一樣的。
當你產生上述錯誤的時候,查看你的動態庫和調用它的應用程序的版本。可以在Project->properties中,打開後看到Configuration properties下面的General選項:Project Defaults中的各個選項是否一致,或者是否兼容見MSDN說明。最後是保持一致,主調程序EXE要和被掉的庫DLL中的這些選項保持一致。


OK這個問題就這麼糾結,就這樣解決。

發佈了7 篇原創文章 · 獲贊 4 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章