MFC下debug改成release版本出現問題及解決辦法


  自己在debug下成功運行了自己寫的測試自己寫第三方庫的程序,這里有用到opencv庫,所以同時用到了自己的庫和opencv的庫,需求因為要進行速度的測試,是想要把debug改成release版本,這里出現了錯誤改了一天,終於搞定。

  這里遇到的錯誤及解決方法如下:

問題一:出現如下所示錯誤。

問題二:錯誤 77 error C1189: #error : Please use the /MD switch for _AFXDLL builds     C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\afxver_.h 81。

問題三:出現自己導出的第三方庫出現問題,說未實行定義,看着像只聲明未定義的問題。

 

下面一一來說明自己最后成功解決的辦法:

一、錯誤一是由於筆者寫的動態庫時運行庫是MT(不懂的可以搜索一下),但調用程序是MD,說是因為運行庫不匹配造成的。即一個程序中混合了不同的運行時庫(靜態庫和動態庫,調試庫和非調試庫),可能會產生沖突,所以一個程序中應該使用相同的運行時庫。

、這個原因是因為可能你使用項目默認值MFC選項的時候,使用了dll共享功能(在共享DLL中使用MFC),而你的程序中使用了靜態庫版本導致,可以把在共享DLL中使用MFC改成在靜態庫中使用MFC來改正(注意這時你lib庫也要是static版本的)。

三、在筆者遇到這個問題時也很納悶,明明定義了而且實現了函數,但是還提示類似為實現的錯誤;后來發現時因為我的實現實在頭文件中,也就是類里面實現的,inline函數,貌似在類里面實現不可以,要把實現放到cpp里面,這樣就可以了。原因自己還不知道,猜測可能是在頭文件中給出的是聲明,而dll是用cpp生成的,沒有實現,所以在lib找地址時找不到。有知道的同學可以共享下,謝謝。

共勉!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM