基於MFC框架下OpenGL的exe可移植

2022-09-04 10:39:09 字數 1476 閱讀 7961

以前寫了幾個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 退...