Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / Lua入门之三:Lua调用C/C++库(动态链接方式)

dll通过函数luaL_openlib导出,然后lua使用package.loadlib导入库函数,基本就是这么个过程,下面上代码来说明一切。#include "stdafx.h"
#ifdef __cplusplus
extern "C"{
#endif#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"#ifdef __cplusplus
}
#endif#include <math.h>#pragma comment(lib, "lua51.lib")
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 }
};
static int ShowMessage(lua_State * L)
{
 lua_pushnumber(L, 1000);
 printf("show message and push 1000 ");
 return -1;
}
#ifdef _WIN32
extern "C" __declspec(dllexport) int luaopen_luadlllib(lua_State* L)
{
#else
extern "C"  int luaopen_luadlllib(lua_State* L)
{#endif // _WIN32 //MessageBox(NULL, TEXT("Register C++ Functions..."), NULL, MB_OK); luaL_openlib(L, "DY_MATH", mathlib,0);
 return 1;
}-----------------------------------------------region loadlib.lua
 --Date
 --此文件由[BabeLua]插件自动生成 --(package.loadlib("./../Debug/libforlua", "luaopen_luadlllib"))()
    --(package.loadlib("./../Debug/libforlua.dll", "luaopen_luadlllib"))()
    local libpath="./../Debug/libforlua.dll"
    local loadlibfunc=package.loadlib(libpath,"luaopen_luadlllib")
    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
 function SHOWMESSAGE()
 showmessage()
 end   print(COS(60*3.1415926/180))
   
    print("enter a number:")
    a = io.read("*number") --endregionbabelua插件的设置:示例工程的下载地址:免费下载地址在 http://linux.linuxidc.com/用户名与密码都是www.linuxidc.com具体下载目录在 /2014年资料/9月/19日/Lua入门之三:Lua调用C&C++库(动态链接方式)下载方法见 http://www.linuxidc.com/Linux/2013-07/87684.htm--------------------------------------分割线 --------------------------------------Lua 语言 15 分钟快速入门 http://www.linuxidc.com/Linux/2013-06/86582.htmLua程序设计(第2版)中文 PDF http://www.linuxidc.com/Linux/2013-03/81833.htmLua程序设计(第二版)阅读笔记 http://www.linuxidc.com/Linux/2013-03/81834.htmNetBSD 将支持用 Lua 脚本开发内核组件 http://www.linuxidc.com/Linux/2013-02/79527.htmCentOS 编译安装 Lua LuaSocket http://www.linuxidc.com/Linux/2011-08/41105.htmLua 的详细介绍:请点这里
Lua 的下载地址:请点这里本文永久更新链接地址:http://www.linuxidc.com/Linux/2014-09/106907.htm