博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
lua三底漆:lua转让c/c++库(动态链接模式)
阅读量:5040 次
发布时间:2019-06-12

本文共 1794 字,大约阅读时间需要 5 分钟。

dll按功能luaL_openlib出口,然后lua使用package.loadlib导入库函数,基本就是这么个过程,以下上代码来说明一切。

#include "stdafx.h"#ifdef __cplusplusextern "C"{#endif#include "lua.h"#include "lualib.h"#include "lauxlib.h"#ifdef __cplusplus}#endif#include 
#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 \n"); return -1;}#ifdef _WIN32extern "C" __declspec(dllexport) int luaopen_luadlllib(lua_State* L){#elseextern "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") 	--endregion

babelua插件的设置:

演示样例project的下载地址:

版权声明:本文博客原创文章,博客,未经同意,不得转载。

转载于:https://www.cnblogs.com/bhlsheji/p/4652616.html

你可能感兴趣的文章
云计算之路-阿里云上:“黑色30秒”走了,“黑色1秒”来了,真相也许大白了...
查看>>
APScheduler调度器
查看>>
设计模式——原型模式
查看>>
【jQuery UI 1.8 The User Interface Library for jQuery】.学习笔记.1.CSS框架和其他功能
查看>>
如何一个pdf文件拆分为若干个pdf文件
查看>>
web.xml中listener、 filter、servlet 加载顺序及其详解
查看>>
前端chrome浏览器调试总结
查看>>
获取手机验证码修改
查看>>
数据库连接
查看>>
python中数据的变量和字符串的常用使用方法
查看>>
等价类划分进阶篇
查看>>
delphi.指针.PChar
查看>>
Objective - C基础: 第四天 - 10.SEL类型的基本认识
查看>>
java 字符串转json,json转对象等等...
查看>>
极客前端部分题目收集【索引】
查看>>
第四天 selenium的安装及使用
查看>>
关于js的设计模式(简单工厂模式,构造函数模式,原型模式,混合模式,动态模式)...
查看>>
KMPnext数组循环节理解 HDU1358
查看>>
android调试debug快捷键
查看>>
【读书笔记】《HTTP权威指南》:Web Hosting
查看>>