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));
lua调用dll demo的更多相关文章
- lua调用dll导出的函数
参考手册 hello.dll #include "pch.h" #include "lua.hpp" #pragma comment(lib, "lu ...
- #Lua:Lua调用C++生成的DLL库
Lua调用C++生成的DLL库 本文参考了某大佬的博客,写得十分详细,推荐!!! 需求: 在之前的求解器中添加了Lua库,使得程序可以在Lua脚本中实现自定义函数功能,考虑到未来可能需要与第三方程序库 ...
- Lua与C++交互初探之Lua调用C++
Lua与C++交互初探之Lua调用C++ 上一篇我们已经成功将Lua的运行环境搭建了起来,也成功在C++里调用了Lua函数.今天我来讲解一下如何在Lua里调用C++函数. Lua作为一个轻量级脚本语言 ...
- java中调用dll文件的两种方法
一中是用JNA方法,另外是用JNative方法,两种都是转载来的, JNA地址:http://blog.csdn.net/shendl/article/details/3589676 JNativ ...
- DLL模块例2:使用__declspec(dllexport)导出函数,extern "C"规范修饰名称,隐式连接调用dll中函数
以下内容,我看了多篇文章,整合在一起,写的一个例子,关于dll工程的创建,请参考博客里另一篇文章:http://www.cnblogs.com/pingge/articles/3153571.html ...
- DLL模块例1:使用.def模块导出函数,规范修饰名称,显示连接调用dll中函数
以下内容,我看了多篇文章,整合在一起,写的一个例子,关于dll工程的创建,请参考博客里另一篇文章:http://www.cnblogs.com/pingge/articles/3153571.html ...
- Java调用.dll文件
因为项目的需求,要在JAVA项目中调用Windows的Dll(动态链接库)文件,之前用Jni调用过C写的Dll文件,比较麻烦,这里不多说,网上也有很多这方面的文档.在网上找到一个开源的组件JNativ ...
- Java调用DLL有多种方式,常用的方式有JNative、JNA、JNI等。
JNative方式调用dll JNative是一种能够使Java语言使调用DLL的一种技术,对JNI进行了封装,可能有些读者会有这样一个问题,JNative对JNI进行了封装,并且是一种跨语言的使用D ...
- 如何使用g++编译调用dll的c++代码
本文将有以下4个部分来讲如何使用g++编译调用dll的c++代码. 1.如何调用dll 2.动态链接和静态链接的区别 3.g++的编译参数以及如何编译调用dll的c++代码 4.总结 1.如何调用dl ...
随机推荐
- 多测师讲解jmeter _接口请求_(003)高级讲师肖sir
1.简单接口的请求 2. 3. 正则查看: 正则提取:在后置处理器中正则请求 设置:正则表达式 JSESSIONID提取器: Debug sampler 总结:
- 分布式锁结合SpringCache
1.高并发缓存失效问题: 缓存穿透: 指查询一个一定不存在的数据,由于缓存不命中导致去查询数据库,但数据库也无此记录,我们没有将此次查询的null写入缓存,导致这个不存在的数据每次请求都要到存储层进行 ...
- [leetcode] 周赛 211
比赛题目:https://leetcode-cn.com/circle/discuss/luvHfG/ 两个相同字符之间的最长子字符串 题目:5543. 两个相同字符之间的最长子字符串. 开始理解错题 ...
- Jenkins:用maven在本地打包部署一个github的springboot项目(Jenkins 2.257)
一,部署的准备工作 1,测试项目的地址: https://github.com/liuhongdi/profile 是一个空白项目 2,准备java环境:参见: https://www.cnblogs ...
- 面试官:为什么MySQL的索引要使用B+树,而不是其它树?比如B树?
InnoDB的一棵B+树可以存放多少行数据? 答案:约2千万 为什么是这么多? 因为这是可以算出来的,要搞清楚这个问题,先从InnoDB索引数据结构.数据组织方式说起. 计算机在存储数据的时候,有最小 ...
- Python函数名的应用和新特性格式化输出
1.函数名指向的是函数的内存地址. def func(): print(123) print(func,type(func)) # <function func at 0x000000000 ...
- 【Azure Redis 缓存 Azure Cache For Redis】Redis出现 java.net.SocketTimeoutException: Read timed out 异常
问题描述 在使用Azure Redis时,遇见Read Timed out异常, Redis的客户端使用的时jedis.问题发生时,执行redis部分指令出错,大部分get指令,set指令能正常执行. ...
- Ⅲ Dynamic Programming
Dictum: A man who is willing to be a slave, who does not know the power of freedom. -- Beck 动态规划(Dy ...
- 剑指offer——2
剑指offer 机器人的运动范围 数组的应用和递归 package com.wang.test; public class Myso { /** * 题目描述 * 地上有一个m行和n列的方格.一个机器 ...
- LeetCode 45跳跃游戏&46全排列
原创公众号:bigsai,回复进群加入力扣打卡群. 昨日打卡:LeetCode 42字符串相乘&43通配符匹配 跳跃游戏 题目描述: 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中 ...