lua调用dll demo

使用的是lua5.3

DllMain.cpp

 1 //生成的dll  是   lua_add53.dll
 2 //luaopen_lua_add
 3 extern "C" {
 4 #include "F:/lua_src/lua-5.3.5_Win64_vc15_lib/include/lua.h"
 5 #include "F:/lua_src/lua-5.3.5_Win64_vc15_lib/include/lualib.h"
 6 #include "F:/lua_src/lua-5.3.5_Win64_vc15_lib/include/lauxlib.h"
 7 };
 8 #pragma comment(lib, "F:/lua_src/lua-5.3.5_Win64_vc15_lib/lua53.lib")
 9
10 #include <iostream>
11 using namespace std;
12
13 extern "C" int ShowMsg(lua_State* luaEnv) {
14   cout << "Hello world from clibs!" << endl;
15   return 0; // 返回值个数为0个.
16 }
17
18 extern "C" int sub2(lua_State* L)
19 {
20   double op1 = luaL_checknumber(L, 1);
21   double op2 = luaL_checknumber(L, 2);
22   int temp = op1 - op2;
23   lua_pushnumber(L, temp);
24   return 1;
25 }
26
27 // part one: 要导出的函数列表
28 static luaL_Reg luaLibs[] = {
29     { "ShowMsg", ShowMsg},
30     { "sub2", sub2},
31     { NULL, NULL }
32 };
33
34 // part two: DLL入口函数,Lua调用此DLL的入口函数.
35 extern "C" __declspec(dllexport)
36 int luaopen_lua_add(lua_State* luaEnv) {   //WinFeature是modole名, 将来require这个名字
37   //lua_register(luaEnv, "ShowMsg", ShowMsg);  //关键一行, 在luaState上注册好这个lib
38   //lua_register(luaEnv, "sub2", sub2);  //关键一行, 在luaState上注册好这个lib
39   lua_newtable(luaEnv);
40   luaL_setfuncs(luaEnv, luaLibs,0);
41   return 1;
42 }

编译后是 lua_add53.dll

lua

1 local mytest = require "lua_add"
2 mytest.ShowMsg();
3 print(mytest.sub2(1,2));

原文地址:https://www.cnblogs.com/l2017/p/11365550.html

时间: 2024-10-05 08:04:24

lua调用dll demo的相关文章

LUA调用 Dll 添加收藏夹操作!!!IE Chrome

// AddFavorate.cpp : Defines the exported functions for the DLL application. // #include "stdafx.h" #include "atlbase.h" #include <iostream> #include <fstream> #include <string> #include "stdlib.h" #include

lua调用dll 编译lfs

From:http://blog.csdn.net/snlscript/article/details/16340653 #include <Windows.h> extern "C"{#include <lua.h>#include <lauxlib.h>#include <stdio.h>#include <stdlib.h>#include <stdarg.h>#include <lualib.h>

lua调用C++写的DLL实现“热更新”

原创作品,转载请注明来源是CSDN:http://blog.csdn.net/relar/article/details/38084689 开发游戏服务器往往有"热更新"的需求,就是在不停止服务程序的情况下,对服务程序进行升级.这里采用lua脚本桥接C++的模式.程序主框架用C++,程序的业务逻辑也是C++(具体的是C++写的DLL),这两者之间用LUA脚本语言进行桥接.当程序运行时,只要改变LUA脚本,即可以选择使用不同的DLL,以实现业务逻辑的升级更新. 上演示代码,代码分为三部分

lua调用cpp的DLL

首先新建一个cpp项目,命名为cppLibForLua,把lua的库引入,添加如下文件,编译成DLL GameHelp.h #ifdef GAME_HELP_API #define API __declspec(dllexport) #else #define API __declspec(dllimport) #endif extern "C" { API int fastPow(lua_State *L); API int luaopen_MyLuaDLL(lua_State* L

Lua与C++交互初探之Lua调用C++

Lua与C++交互初探之Lua调用C++ 上一篇我们已经成功将Lua的运行环境搭建了起来,也成功在C++里调用了Lua函数.今天我来讲解一下如何在Lua里调用C++函数. Lua作为一个轻量级脚本语言,他只包含了一些必要的系统库函数,当有需要时还得自己去写.有一次我要做一个两数异或的操作发现函数库里居然没有异或运算.不得不非常苦逼的自己去写.后来接触Lua深了之后才知道将这种"缺陷"可以由C函数来弥补.但要做到这一点对于一个对C只知道if else的学生来说确实还是有不少难度. 在学习

QT直接调用dll

Qt调用DLL方法 直接调用DLL则需要三个文件,头文件(.h).导入库文件(.lib).动态链接库(.dll),具体步骤如下: 注意:在qtCreaor中生成的动态库库文件文件为.a结尾,vs生成的动态链接库是.lib结尾 1.首先我们把 .h与.lib/.a 文件复制到程序当前目录下,然后再把dll文件复制到程序的输出目录(如果是debug版的话就将mydlld.dll放在此文件夹下,Release相同).(注意:如果dll是用C写的,因此要用 extern "C" { #incl

java中调用dll文件的两种方法

一中是用JNA方法,另外是用JNative方法,两种都是转载来的, JNA地址:http://blog.csdn.net/shendl/article/details/3589676   JNative地址:http://www.jb51.net/article/35232.htm JNA方法: 介绍 给大家介绍一个最新的访问本机代码的Java框架—JNA. JNA(Java Native Access)框架是一个开源的Java框架,是SUN公司主导开发的,建立在经典的JNI的基础之上的一个框架

[Lua]Lua调用C/C++函数/库(动态链接方式)

新建DLL空的win32工程,新建test.cpp文件,内容如下 /*Lua调用C/C++函数/库(动态链接方式)*/ #include<iostream> using namespace std; #include<lua.hpp> static int math_abs(lua_State *L) { lua_pushnumber(L, abs((int)luaL_checknumber(L, 1))); return 1; } static int math_cos(lua_

Step By Step(Lua调用C函数)

原文: http://www.cnblogs.com/stephen-liu74/archive/2012/07/23/2469902.html Lua可以调用C函数的能力将极大的提高Lua的可扩展性和可用性.对于有些和操作系统相关的功能,或者是对效率要求较高的模块,我们完全可以通过C函数来实现,之后再通过Lua调用指定的C函数.对于那些可被Lua调用的C函数而言,其接口必须遵循Lua要求的形式,即typedef int (*lua_CFunction)(lua_State* L).简单说明一下