编译lua
下载lua源码,github仓库
使用vs编译源码,新建一个静态库项目(只会生成lib文件),想要dll的话就新建dll项目(有一个lib文件和dll文件)
把lua源码下面的文件夹都是,复制到vs项目中
lib目录是我手动建的,我把编译好的lib文件放lib目录下了
点击生成就好了
在c++中使用lua
包含目录
写上面的liblua/include
库目录
写刚编译出来的lib目录,上图的lib目录
链接器
添加lualib.lib
c++ 测试demo示例
c++要include lua.hpp 不然会报错
// lua.hpp
// Lua header files for C++
// <<extern "C">> not supplied automatically because Lua also compiles as C++extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
这里的extern "C"就是告诉编译器按c格式来。兼容c++
#include <lua.hpp>#include <iostream>using namespace std;static void StackDump(lua_State* L) {int top = lua_gettop(L);for (int i = 1; i <= top; ++i) {int t = lua_type(L, i);switch (t) {case LUA_TSTRING: {cout << lua_tostring(L, i);break;}case LUA_TBOOLEAN: {cout << lua_toboolean(L, i);break;}case LUA_TNUMBER: {if (lua_isinteger(L, i))cout << lua_tointeger(L, i);elsecout << lua_tonumber(L, i);break;}default: {cout << lua_typename(L, i);break;}}cout << " ";}cout << endl;
}int main()
{lua_State* L = luaL_newstate();lua_pushboolean(L, 1);lua_pushnumber(L, 10);lua_pushnil(L);lua_pushstring(L, "hello");StackDump(L);return 0;
}