在Visual Studio 2005中搭建Lua環境
- 下載安裝程序:http://www.lua.org/download.html,當前最新版是LuaForWindows_v5.1.4-45.exe
- 安裝LuaForWindows_v5.1.4-45.exe
- 安裝完成後測試Lua是否安裝成功:開始-運行-lua,會彈出一個命令輸入框,以下圖,即安裝成功
在Microsoft Visual Studio 2005中配置Lua編譯環境
- 安裝完LuaForWindows_v5.1.4-45.exe
- tools->options->projects->vc++ directories
(1)include files選項添加lua include路徑,個人是 D:/Program Files/Lua/Lua5.1/includehtml
(2)library files 選項添加lua lib路徑,個人是 D:/Program Files/Lua/Lua5.1/libc++
注:若是怕出問題,能夠把這些新加的選項都提到最前面
在Microsoft Visual Studio 2005中測試一個Lua程序
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>
int main(int argc, char *argv[])
{
char line[BUFSIZ];
lua_State *L = luaL_newstate();
luaL_openlibs(L);
while (fgets(line, sizeof(line), stdin) != 0) printf("%s\n",line);
//luaL_dofile(L, "test.lua");
lua_close(L);
return 0;
}
編譯時提示錯誤以下:
1>a1.obj : error LNK2019: 沒法解析的外部符號 "void __cdecl lua_close(struct lua_State *)"
(?lua_close@@YAXPAUlua_State@@@Z),該符號在函數 _main 中被引用
1>a1.obj : error LNK2019: 沒法解析的外部符號 "void __cdecl luaL_openlibs(struct lua_State
*)" (?luaL_openlibs@@YAXPAUlua_State@@@Z),該符號在函數 _main 中被引用
1>a1.obj : error LNK2019: 沒法解析的外部符號 "struct lua_State * __cdecl luaL_newstate
(void)" (?luaL_newstate@@YAPAUlua_State@@XZ),該符號在函數 _main 中被引用
1>D:\111\111\Debug\111.exe : fatal error LNK1120: 3 個沒法解析的外部命令
緣由
代碼中的包含頭部分
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>
用在了c++語法中
解決方法
添加擴展c調用申明
extern "C" {
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>
}
再次編譯,提示錯誤以下:
1>a1.obj : error LNK2019: 沒法解析的外部符號 _lua_close,該符號在函數 _main 中被引用
1>a1.obj : error LNK2019: 沒法解析的外部符號 _luaL_openlibs,該符號在函數 _main 中被引用
1>a1.obj : error LNK2019: 沒法解析的外部符號 _luaL_newstate,該符號在函數 _main 中被引用
緣由
lua靜態庫沒有連接
解決方法
Project->Code text properties->configuration properties->linker->input
Additional Dependencies 選項加入 lua5.1.lib lua51.lib
再次編譯成功。
運行程序時,發現只能當即運行,不能單步調試的運行。