编译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);
else
cout << 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;
}