以前寫了幾個mfc框架下的opengl小專案,但是移植exe的時候總需要copy很多dll檔案,感覺太low,於是今天就抽時間解決了這個問題。
我們了解一下關於mfc的兩個執行機制:
一、mfc庫鏈結方式
(1)靜態連線
把需要的mfc庫函式放進你的exe之中,這樣,在mfc庫函式檔案不在的情況下,你的exe仍然可以使用到這個庫函式。
(2)動態連線
庫函式不在exe之中,這樣在執行時,就必須載入相應的mfc dll,否則無法正常執行。
二、執行庫
(1)多執行緒dll (md)和多執行緒除錯dll (mdd)
載入的是動態執行時庫,程式必須依賴c執行時的動態鏈結庫。
(2)多執行緒(mt)和多執行緒除錯(mtd)
載入的是靜態執行時庫,代表著程式執行的時候不會再依賴外部的執行時庫dll檔案。
我們選擇專案—屬性—配置屬性—常規—mfc的使用,選擇「在靜態庫中使用mfc」,選擇專案—屬性—配置屬性—c/c++—**生成—執行庫,選擇「多執行緒(mt)」。
ps:如果改過之後,專案執行後出現《warning lnk4098: 預設庫「libcmt」與其他庫的使用衝突;請使用 /nodefaultlib:library》類似的錯誤,選擇「多執行緒除錯 (/mtd)」。
我們把所需的dll檔案和exe放在一起打包,我用的是winrar軟體。
過程:1,選中所需的dll檔案和exe
2,新增到解壓檔案
3,選擇「高階」—「自解壓選項(x)」
(1)選擇「文字和圖示」,可以去修改解壓後exe的圖示
(2)選擇「設定」
(3)選擇「模式」
(4)選擇「更新」
之後解壓就ok了。新的exe,可以在其他windows系統的電腦直接執行。
參考:1 將exe和dll檔案打包成單一檔案的方法
2 如何用 vs 2013 打包 vc++ 程式?
3 詳解多執行緒mt和多執行緒md的區別
Nehe的OpenGL框架 MFC版
nehe的幾個opengl框架都是win32 sdk版本的,我現在需要在mfc下學習opengl,今天看了他寫的第乙個opengl框架,就在mfc中實現了下。為了簡單起見,把全屏那部分就拋棄掉了,畢竟重點不在這上面,而且mfc要實現這個全屏的功能也不像sdk那麼容易。protected boolse...
Nehe的OpenGL框架 MFC版
nehe的幾個opengl框架都是win32 sdk版本的,我現在需要在mfc下學習opengl,今天看了他寫的第乙個opengl框架,就在mfc中實現了下。為了簡單起見,把全屏那部分就拋棄掉了,畢竟重點不在這上面,而且mfc要實現這個全屏的功能也不像sdk那麼容易。opengldemoview.h...
MFC搭建OpenGL框架示例
本文以sdi文件結構為例,列出繪製opengl圖形的關鍵步驟 1 在單文件視窗的建立過程中設定好顯示的畫素格式,並按opengl的要求設定好視窗的屬性和風格 2 獲得windows裝置描述表cdc的成員變數,然後將其與opengl的繪製描述表rc聯絡起來 3 呼叫opengl命令進行圖形繪製 4 退...