VS編譯Lua程序,生成lua.lib

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文件下

後面添加一個項目嘗試在C/C++代碼中調用lua
1、在解決方案中添加一個 Win32 console project,項目名稱命名爲testlua,後面wizard界面中的選項無需修改
2、添加對lua項目的引用
a Common Properties -> Framework and References -> Add New References 
 選擇lua項目
3、添加對頭文件的include directory
a Configuration Properties -> C/C++-> General -> Additional Include Directories 
 添加D:\lua-5.1.5\src
2、在項目的的在testlua.cpp文件中添加下面的代碼

  1. #include "stdafx.h"  
  2. #include <stdio.h>  
  3. #include <string.h>  
  4.   
  5. extern "C"  
  6. {  
  7. #include <lua.h>  
  8. #include <lualib.h>  
  9. #include <lauxlib.h>  
  10. }  
  11.   
  12. int _tmain(int argc, _TCHAR* argv[])  
  13. {  
  14.     lua_State *L = lua_open();  
  15.     luaL_openlibs(L);  
  16.   
  17.     const char *buf = "print('Hello World')";  
  18.     luaL_dostring(L,buf);  
  19.       
  20.     lua_close(L);  
  21.   
  22.     return 0;  
  23. }  

按F5或Ctrl+F5,將會在控制檯中輸入了Hello World。

值得注意的:
前面的4->b步驟中如果選擇的是Compile as C++ code,則在上面代碼中就不需要extern "C"{},直接include就ok。否則會出現鏈接錯誤:

testlua.obj : error LNK2019: unresolved external symbol _lua_close referenced in function _wmain

lua5.1.4 +VS2012編譯靜態庫出錯解決方案:
在項目的C++->預處理器->預處理器定義  添加一個_CRT_SECURE_NO_WARNINGS


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章