VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 3523|回复: 44

[原创] Lua语言调用C DLL文件

[复制链接]
79_avatar_middle
在线会员 发表于 2015-12-24 15:28:09 | 显示全部楼层 |阅读模式
开门见山,直接上代码:#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
#include <windows.h>
  
static int MyLuaDLL_HelloWorld(lua_State* L)
{
     MessageBox(NULL,"Hello","World",MB_OK);
     return 0;
}
static int MyLuaDLL_average(lua_State *L)
{
      
     int n = lua_gettop(L);
     double sum = 0;
     int i;
      
     for (i = 1; i <= n; i++)
     {
         
         sum += lua_tonumber(L, i);
     }
      
     lua_pushnumber(L, sum / n);
      
     lua_pushnumber(L, sum);
      
     return 2;
}
  
static const luaL_reg MyLuaDLLFunctions [] =
{
     {"HelloWorld",MyLuaDLL_HelloWorld},
     {"average",MyLuaDLL_average},
     {NULL, NULL}
};
  
int __cdecl __declspec(dllexport) luaopen_MyLuaDLL(lua_State* L)
{
     luaL_openlib(L, "MyLuaDLL", MyLuaDLLFunctions, 0);
     return 1;
}
   
-- lua code: --
  
local testlib = package.loadlib("Lua_Dll.dll","luaopen_MyLuaDLL");   --获取DLL中抛出函数地址
print (testlib)  
if(testlib)then
    testlib();  --调用DLL中抛出函数
else
    -- Error
end
  
MyLuaDLL.HelloWorld();
  
a,b=MyLuaDLL.average(23,33,3344);
print("average:",a,"sum:",b);
--------------------------------------------
my.c文件:
  
#include "stdafx.h"
#include <stdio.h>
#include "my.h"
  
static int pri(lua_State *L)
{  
MessageBox(NULL,"Hello","this is a c program!",MB_OK);
return 0;
}
  
static const struct luaL_Reg mylib[]={
{"pri",pri},
{NULL,NULL}
};
  
__declspec(dllexport) int luaopen_mylib (lua_State* L)
{
luaL_register(L,"mylib",mylib);
return 1;
}
  
my.h文件:
  
#include "lua.h"  
#include "lualib.h"
#include "lauxlib.h"
#pragma   comment(lib,"lua5.1.lib")
  
test.lua文件:
  
local a=package.loadlib("my.dll","luaopen_mylib");
  
a()
mylib.pri()

评分

参与人数 4驿站币 +6 热心值 +6 收起 理由
16_avatar_small 阳光 + 1 + 1 赞一个!
28_avatar_small 天下 + 1 + 1 很给力!
65_avatar_small 编程者 + 2 + 2
88_avatar_small 寂寞江湖 + 2 + 2 很给力!

查看全部评分





上一篇:C++通过http下载二进制文件 的一个办法
下一篇:最近写好的播放器
72_avatar_middle
在线会员 发表于 2015-12-24 22:36:43 | 显示全部楼层
lua一般在手机游戏里用的多了
70_avatar_middle
在线会员 发表于 2015-12-24 22:38:08 | 显示全部楼层
路过 看看
50_avatar_middle
在线会员 发表于 2015-12-25 01:04:03 | 显示全部楼层
谢谢分享宝贝
88_avatar_middle
online_vip 发表于 2015-12-25 12:23:32 | 显示全部楼层
调用C DLL文件
55_avatar_middle
在线会员 发表于 2015-12-25 13:22:07 | 显示全部楼层
!!!!!!!!!!!!!!!!!!!
24_avatar_middle
在线会员 发表于 2015-12-25 15:36:19 | 显示全部楼层
开看看源码的
65_avatar_middle
donate_vip 发表于 2015-12-25 20:40:40 | 显示全部楼层
学习了不错
83_avatar_middle
在线会员 发表于 2015-12-26 08:44:50 | 显示全部楼层
一般就是通过栈来弄的
59_avatar_middle
online_vip 发表于 2015-12-26 09:15:49 | 显示全部楼层
C DLL文件
28_avatar_middle
在线会员 发表于 2015-12-26 12:26:24 | 显示全部楼层
谢谢分享啊
84_avatar_middle
在线会员 发表于 2015-12-26 13:31:38 | 显示全部楼层
学习了不错
84_avatar_middle
在线会员 发表于 2015-12-26 15:33:14 | 显示全部楼层
DLL文件 [修改]
03_avatar_middle
在线会员 发表于 2015-12-30 19:20:57 | 显示全部楼层
学习学习!
49_avatar_middle
online_vip 发表于 2015-12-31 10:37:45 | 显示全部楼层
IsForegroundFullscreen
46_avatar_middle
在线会员 发表于 2015-12-31 15:51:49 | 显示全部楼层
这个要看看,将来有用...
26_avatar_middle
在线会员 发表于 2015-12-31 19:45:58 | 显示全部楼层
直接上代码:
66_avatar_middle
在线会员 发表于 2016-1-2 14:48:24 | 显示全部楼层

lua一般在手机游戏里用的多了
70_avatar_middle
在线会员 发表于 2016-1-3 15:38:11 | 显示全部楼层
正在学习lua
04_avatar_middle
在线会员 发表于 2016-1-5 19:28:24 | 显示全部楼层
正在学习ing中,lua的强大。
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-4-23 11:02

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表