windows下編譯lua源碼

環境:

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


發佈了24 篇原創文章 · 獲贊 2 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章