码迷,mamicode.com
首页 > 编程语言 > 详细

[Lua]Lua调用C/C++函数/库(动态链接方式)

时间:2015-03-14 18:34:55      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:

新建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 loadlibfunc=package.loadlib(libpath,"LuaAPIDLL")
loadlibfunc()

function COS(a)
    print("called COS in lua script")
    return DY_MATH.cos(a)
end

function SIN(a)
    print("called SIN in lua script")
    return DY_MATH.sin(a)
end

print(COS(60*3.1415926/180))
print(SIN(30))

os.execute("pause") --直接双击此文件,cmd窗口不会消失

--endregion

直接双击lualoadlib.lua文件,结果如下

技术分享

[Lua]Lua调用C/C++函数/库(动态链接方式)

标签:

原文地址:http://blog.csdn.net/shimazhuge/article/details/44261723

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!