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文件中添加下面的代碼
- #include "stdafx.h"
- #include <stdio.h>
- #include <string.h>
- extern "C"
- {
- #include <lua.h>
- #include <lualib.h>
- #include <lauxlib.h>
- }
- int _tmain(int argc, _TCHAR* argv[])
- {
- lua_State *L = lua_open();
- luaL_openlibs(L);
- const char *buf = "print('Hello World')";
- luaL_dostring(L,buf);
- lua_close(L);
- return 0;
- }
按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