第一种方式
新建DLL空的win32工程,新建test.cpp文件,内容如下
/*Lua调用C/C++函数/库(动态链接方式)*/
#include<iostream>
using namespace std;
#include<lua.hpp>
static int math_abs(lua_State *L)
{
lua_pushnumber(L, abs((int)luaL_checknumber(L, 1)));
return 1;
}
static int math_cos(lua_State *L)
{
lua_pushnumber(L, cos((double)luaL_checknumber(L, 1)));
return 1;
}
static int math_sin(lua_State *L)
{
lua_pushnumber(L, sin((double)luaL_checknumber(L, 1)));
return 1;
}
static const luaL_reg mathlib[] = {
{ "abs", math_abs },
{ "cos", math_cos },
{ "sin", math_sin },
{ NULL, NULL }
};
//dll通过函数luaI_openlib导出,然后lua使用package.loadlib导入库函数
extern "C" __declspec(dllexport) int LuaAPIDLL(lua_State* L)//需要注意的地方,此函数命名与库名一致
{
luaI_openlib(L,"DY_MATH",mathlib,0);
return 1;
}
lualoadlib.lua文件
--region lualoadlib.lua
local libpath="./../Debug/LuaAPIDLL.dll"
local loadl