博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
lua 调用 dll 的简单demo
阅读量:6162 次
发布时间:2019-06-21

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

windows下的 lua 与 c 进行交互, 本人新手,只能做到这么多了

c代码

//#include "stdio.h"#include "windows.h"#ifdef _cplusplus  extern "C"{#endif#include "lua.h"#include "lauxlib.h"#include "lualib.h"extern  int  isquare(lua_State *L);extern  int  alert(lua_State *L);#ifdef _cplusplus}#endifint luaopen_add(lua_State *L){    lua_register(            L,               /* Lua 状态机 */            "square",        /*Lua中的函数名 */            isquare          /*当前文件中的函数名 */            );     lua_register(L,"alert",alert);//    lua_register(L,"cube",icube);    return 0;}int alert(lua_State *L){    const char * desc = lua_tostring(L,-1);    MessageBox(NULL,desc,"alert",MB_OK);    return 1;}int isquare(lua_State *L){              /* C中的函数名 */    float rtrn = lua_tonumber(L, -1);      /* 从Lua虚拟机里取出一个变量,这个变量是number类型的 */    //printf("Top of square(), nbr=%f\n",rtrn);    lua_pushnumber(L,rtrn*rtrn);           /* 将返回值压回Lua虚拟机的栈中 */    return 1;                              /* 这个返回值告诉lua虚拟机,我们往栈里放入了多少个返回值 */}

编译命令

cl /c add.c /I ../include

include 为 lua 头文件所在目录

link /def:export.def /dll add.obj ../lua53.lib "kernel32.lib" "user32.lib" "gdi32.lib"

导出函数到 dll

export.def

; export.defLIBRARY ADD; MY_DLLMAIN 将成为生成的dll的名称DESCRIPTION  'test'EXPORTS    isquare  @ 1    alert    @ 2; 这个名称即为函数的实际导出名称 @1为函数的导出编号

lua

square = package.loadlib("ADD.dll", "isquare")alert=package.loadlib("ADD.dll", "alert")print(alert)print ( square(2) )alert("222")

执行结果

clipboard.png

虽然有乱码存在问题,但是期望结果基本已经达到

转载地址:http://kbrfa.baihongyu.com/

你可能感兴趣的文章
C#一个关于委托和事件通俗易懂的例子
查看>>
类似于SVN的文档内容差异对比工具winmerge
查看>>
Cause: java.sql.SQLException: The user specified as a definer ('root'@'%') does not exist
查看>>
quratz线程
查看>>
execnet: rapid multi-Python deployment
查看>>
windows修改3389端口
查看>>
关于JavaScript词法
查看>>
FreeSwitch中的会议功能(4)
查看>>
MySQL中创建用户分配权限(到指定数据库或者指定数据库表中)
查看>>
AutoReleasePool 和 ARC 以及Garbage Collection
查看>>
重新想象 Windows 8 Store Apps (9) - 控件之 ScrollViewer 基础
查看>>
乐在其中设计模式(C#) - 提供者模式(Provider Pattern)
查看>>
MVP Community Camp 社区大课堂
查看>>
GWT用frame调用JSP
查看>>
大型高性能ASP.NET系统架构设计
查看>>
insert select带来的问题
查看>>
EasyUI 添加tab页(iframe方式)
查看>>
mysqldump主要参数探究
查看>>
好记心不如烂笔头,ssh登录 The authenticity of host 192.168.0.xxx can't be established. 的问题...
查看>>
使用addChildViewController手动控制UIViewController的切换
查看>>