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 ...
随机推荐
- Rust之路(4)——所有权
[未经书面同意,严禁转载] -- 2020-10-14 -- 所有权是Rust的重中之重(这口气咋像高中数学老师 WTF......). 所有权是指的对内存实际存储的数据的访问权(包括读取和修改),在 ...
- MeteoInfoLab脚本示例:计算水平螺旋度
尝试了用MeteoInfoLab编写计算水平螺旋度的脚本,结果未经验证.脚本程序: print 'Open data files...' f_uwnd = addfile('D:/Temp/nc/uw ...
- Redis不重启的情况下 切换持久化模式
确保redis版本在2.2以上 [root@localhost /]# redis-server -v Redis server v=4.0.10 sha=00000000:0 malloc=jema ...
- ansible2.9.5使用become参数实现sudo功能
一,为什么要使用sudo? 1, 生产环境中,为了安全因素,我们不会直接使用root来登录到server, 确实有需要的情况下,我们再使用sudo切换到root权限. 所以很多ansible的演示直接 ...
- Excel 导出的方法 之二
// <summary> /// 导出到Excel lichenghu /// </summary> /// <param name="dt"> ...
- vscode配置python调试仍然直接输出
工作目录不能放在python的安装目录下
- DefenseCode宣布集成GitHub为开发人员提供SAST解决方案
DefenseCode集团宣布,DefenseCode静态应用程序安全测试(SAST)ThunderScan解决方案现可作为一个GitHub Action,提供30多种语言的安全漏洞分析,并将详细的漏 ...
- 初学 Python 需要安装哪些软件?
自动配置.有效求助.协作编程.版本控制.一站式解决 Python 新手练习中的痛点. 痛点 这个学期,我在北得克萨斯大学(University of North Texas)教 INFO 5731: ...
- 基于Spring读写分离
为什么是基于Spring的呢,因为实现方案基于Spring的事务以及AbstractRoutingDataSource(spring中的一个基础类,可以在其中放多个数据源,然后根据一些规则来确定当前需 ...
- 获取和设置pdf目录
目录 前言 工具 获取pdf目录 获取toc格式目录 获取json格式目录 设置pdf目录 结语 前言 获取pdf目录:主要场景是为了拿到目录信息做编辑,从pdf软件里面一个个复制那肯定费时费力. 设 ...