環境:
win7 +vs2013
lua源碼是5.2.3
新建項目
Lua的源代碼編譯後會生成三個對象:Lua庫、基於該庫的獨立解釋器以及字節碼編譯器。所以,在solution中,我們也要建立三個project與他們對應。在這裏,暫且稱整個solution爲liblua,三個project分別爲liblua、lua、luac,類型都可以選擇C++的空項目。lua.c放在lua項目下,luac.c放在luac項目下,其餘的全部都是lua庫的代碼,放在liblua下。
項目配置
1、我們要設置lua以及luac依賴於liblua,這樣可以保證liblua最先進行編譯。(項目上右鍵,“項目依賴項”)
2、我們要讓lua以及luac中包含lua頭文件的預處理指令正常得到展開,把liblua加入到lua以及luac的預處理器搜索目錄中。(項目屬性,VC++目錄,包含目錄)
3、我們要讓lua以及luac能夠在鏈接時正常鏈接到liblua上:
- 修改liblua項目的生成目標爲靜態庫。(項目屬性,常規,配置類型)
- 讓lua以及luac鏈接lua_lib.lib庫。(項目屬性,鏈接器,輸入,附加依賴項)
- 讓lua以及luac搜索lua_lib.lib所在目錄(即我們的生成目錄),以正確的找到該庫。(項目屬性,鏈接器,常規,附加庫目錄或者項目屬性,VC++目錄,庫目錄)在本項目中是F:\lua\lua\liblua\debug
- 添加包含目錄,在本項目中是F:\lua\lua\liblua\liblua
warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
c:\program files (x86)\microsoft visual studio 10.0\vc\include\stdio.h(371) : 參見“sprintf”的聲明
解決方法如下,三個項目都需要配置:
工程->屬性->配置屬性->C/C++->預處理器->預處理器定義
添加以下定義就可以解決:
_CRT_SECURE_NO_DEPRECATE
_SCL_SECURE_NO_DEPRECATE