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 ...
随机推荐
- bufferedReader 读取文件第一行第一个字符丢失问题
在做一个解析pacp文件的时候需要读取文件中的每个属性,但是每次读出来的内容的每一行的第一个字符都被吞掉了,找了半天不知道为什么,后来看到在读取的时候用的read()方法,而且返回值是int类型,在变 ...
- go内建方法 append copy delete
package mainimport "fmt"func main() { testAppend() testCopy() testDelete()}func testAppend ...
- Dokuwiki安装教程
一. CentOS设置 1. 更换阿里源 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos ...
- C++学习---二叉树的输入及非递归遍历
二叉树的二叉链表存储表示如下 //二叉树的二叉链表存储表示 typedef struct BiTNode { char data;//结点数据域 struct BiTNode* lchild, * r ...
- ubuntu JDK&SDK 环境变量配置
ubuntu JDK&SDK 环境变量配置 一.下载JDK 1. 先卸载Ubuntu 带的openJDK: sudo apt-get purge openjdk* 2.到http://www. ...
- webmagic源码浅析
webmagic简介 webmagic可以说是中国传播度最广的Java爬虫框架,https://github.com/code4craft/webmagic,阅读相关源码,获益良多.阅读作者博客[代码 ...
- java中true是关键字吗
java中的关键字有哪些? 答:1)48个关键字:abstract.assert.boolean.break.byte.case.catch.char.class.continue.default.d ...
- ElasticSearch详细笔记
ElasticSearch详细笔记 什么是ElasticSearch Elasticsearch(简称ES)是一个基于Apache Lucene(TM)的开源搜索引擎,无论在开源还是专有领域,Luce ...
- Python opencv resize图片并保存原有的图像比例
参考链接:https://www.jianshu.com/p/3092835eab61 现有的图像是高瘦高瘦的,所以直接resize成矩形不合适.改变了整个结构. 所以采用的是先resize再padd ...
- 数据结构(C++)——顺序表
顺序表和链表的比较 1.存取方式 顺序表可以随机访问,而链表只能从表头顺序查找.(因此经常查找顺序表某一个元素时,顺序表更适合) 2.逻辑结构与物理结构 顺序表中,逻辑上相邻的元素,其物理存储位置也相 ...