• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Lua语言如何调用自己编写的C DLL -- 转

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
Lua语言如何调用自己编写的C DLL文件

#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()

  


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Lua文件处理发布时间:2022-07-22
下一篇:
《TheEvolutionofLua》翻译part2发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap