在共享DLL中使用MFC


使用VS2008,在項目屬性中有一項MFC的使用,有三種設置:    

1.使用標准Windows庫   
2.在共享DLL中使用MFC    
3.在靜態庫中使用MFC    
       第一種顧名思義。
       第二種指的是打包時一些MFC的DLL的內容沒有被包含在EXE文件中,所以EXE文件較小,但是運行時要求系統中要有相關的DLL文件。
       第三種是將DLL中的相關代碼寫進EXE文件中,文件較大,但是可以在沒有相關DLL的機器上運行。    
       同時,如果程序本來是第二種方式,發給同事,在同事機器上運行時,可能會出現錯誤:   “無法啟動程序……,由於應用程序配置不正確,未能啟動此應用程序。”我覺得,在開發階段的程序都選第3種比較好吧,不用管大小以及效率,等后期打包的時候用spy等其他工具都可以,來偵測DLL等就行了。(http://blog.csdn.net/xiexievv/article/details/6314874)
 

       "在共享DLL中使用MFC"指的是打包時一些MFC的DLL的內容沒有被硬編碼到在EXE文件中,所以EXE會文件較小,但是運行時要求運行的系統環境中要有相關的DLL文件.

     "在靜態庫中使用MFC"是將DLL對應的lib靜態庫中的相關代碼硬編碼到EXE文件中,文件較大,但是可以在沒有已經被包含DLL的機器上運行,當然即使如此也並非所有的DLL都會將其硬編碼到Exe中,因此仍然某些DLL是必須的.比如Redistributable Package中的某些DLL.

 

      靜態庫中編譯出來的可執行文件拿到其它機器上也可以運行,共享DLL中編譯出來的可執行文件在本機上可以執行,若拿到其它機器上就需要相應的動態庫支持。

     另外,共享DLL下的工程大小會稍小一些,但是在另一台機器上運行時務必保證那一台機器上有動態庫支持。


免責聲明!

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



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