拆解“遊戲框架”未完成,進度5%

別人編的遊戲框架在這裏

https://github.com/LikeUSummer/GamePainter

https://www.zhihu.com/question/21717567


CxImage圖像操作類庫和lua都挺老的,反正就是和vs2013相當不兼容

不過本人非得用vs2013不可,

於是重新下載最新的Cximage源碼並編譯,(建議多全選字節字符集,MD,以及共享DLL,保持一致)

最新的lua源碼並編譯

然後全面替換並修改代碼以適應新版

目前編譯連接通過

然後估計代碼邏輯哪裏有問題,“創建空文檔失敗”,不過應該可以拿來研究了

反正沒能完美運行成功,看思路算了,這代碼也有點老,中間有些東西隨着時代改變了。

(有C#頂着,除非必要,暫時不打算學MFC)

(反正有空就研究兩下吧)


源文件

(149行)GamePainter.cpp

就一個頭文件,預編譯頭文件stdafx.h內有加入一些相應內容(沒細看用的到的時候再說)
當在debug模式下時,我們分配內存時的new被替換成DEBUG_NEW;
創建 CGamePainterApp的對象theApp(轉到GamePainter.h)

(78行)GamePainterDoc.cpp
(888行)GamePainterView.cpp
(227行)LuaBox.cpp
(86行)MainFrm.cpp
(99行)MusicBox.cpp

(27行)stdafx.cpp


頭文件

(29行)GamePainter.h

頭文件只被編譯一次
判斷是否定義了__AFXWIN_H__ 這個宏,一般用於防止頭文件二次加載(stdafx.h文件設置的目的是爲了加速VisualStudio的編譯過程,具體實現就是根據stdafx.h所包含的文件生成pch預編譯的目標文件。)
(轉到Resource.h)
<派生類名CGgamePainterApp>:<繼承方式><基類名CWinApp>
(轉到基類CWinApp所在文件afxwin.h內看定義,第5084行class CWinApp : public CWinThread)


(41行)gamePainterDoc.h

(61行)GamePainterView.h
(49行)LuaBox.h
(41行)MainFrm.h
(28行)MusicBox.h
√(22行)Resource.h

反正一堆定義和數字,估計生成時的默認RC資源內容。
App Studio是早期VS提供的一個資源編輯器,後來直接整合進VS裏面了
APSTUDIO_INVOKED這個主要是解決VC和其他產生衝突~~~
具體解釋爲:
If the AppWizard-created file structure is corrupted and Visual C++ reads the #error line above, it reports a fatal error and abort the 
reading of the .RC file.
所以,一般的RC資源裏面都有APSTUDIO_INVOKED和TEXTINCLUDE

(回到GamePainter.h)
(89行)stdafx.h
(27行)targetver.h

(810行)ximage.h


外部依賴項

afxwin.h
第5084行class CWinApp : public CWinThread
<派生類名CWinApp>:<繼承方式><基類名CWinThread>

轉到4791行查看CWinThread定義

class CWinThread : public CCmdTarget

轉到1701行查看CCmdTarget定義

class AFX_NOVTABLE CCmdTarget : public CObject

轉到afx.h,第547行查看 CObject定義

afx.h

第547行查看 CObject定義

inginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginging




外加資源文件等等等


CxImage圖像處理庫VS2010編譯和調用(靜態庫和動態庫調用)
http://blog.csdn.net/atceedsun/article/details/40616767

lua:

1、下載Lua源碼 http://www.lua.org/download.html 
a 下載後解壓到一個目錄下,這裏假設解壓到D:\lua-5.1.5b 注意下載的版本,如果是5.2.x,後面代碼中的C API發生了改變
2、在VS中新建一個靜態庫項目,項目命名爲lua
a 選擇新建 Win32 console project
b 在wizard界面選擇 static Library;不選擇Precomplied Header
3、往工程中添加代碼
a 複製D:\lua-5.1.5\src 目錄下的*.h文件到項目的Header Files目錄下
b 複製D:\lua-5.1.5\src 目錄下的*.c文件到項目的Header Files目錄下
4、配置項目的屬性,在項目的“配置屬性” 界面中操作
a Configuration Properties -> C/C++-> General -> Additional Include Directories 
 添加D:\lua-5.1.5\src
b Configuration Properties -> C/C++-> Advanced -> compile as 
 這裏的選擇將影響後面代碼中如何指定編譯鏈接方式,後面的測試選擇的是Compile as C code
5、 生產項目 Build
如果是DEBUG mode 將在Debug目錄下看到一個lua.lib文件,Release mode的lib文件在Release文件下
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章