vs生成lua动态库并如何使用动态库

本博客采用vs2015以及lua5.3版本进行lua动态库以及使用 工具这里就不赘述了,网上很多

生成lua动态库的步骤

一.建立vs c++控制台 dll程序
二.设置编译相对输出路径…/…/…/bin
三.设置输出 导入库相对路径…/…/…/lib
四.添加LUA_BUILD_AS_DLL宏(确认一定添加了)
相对路径指的是

在这里插入图片描述
目录结构很清晰,如果和我不一样,自行调整相对路径即可。

第一步 创建工程

在这里插入图片描述目录结构如下:
在这里插入图片描述
待会生成的.dll与.lib文件会生成到bin和lib目录下

第二步 导入lua源码(与相对路径同一路径)

makefile文件不要导入,因为windows不需要
在这里插入图片描述这时候点生成会报错,因为有两个main函数,这时候注释掉lua.c和luac.c的main函数即可
在这里插入图片描述在这里插入图片描述再次点生成或许会报错,如图
在这里插入图片描述因为没有点生成动态库 改一下属性即可
在这里插入图片描述重新生成就成功了

第三步 设置相对输出路径

在这里插入图片描述我这里的bin目录与相对位置文件路径相差三个上级目录,所以我这么设置
(可以根据自己工程的相对位置自行调整)
然后在bin目录下会生成如下文件
在这里插入图片描述
再设置一下平台工具集,不然有些平台不能运行
在这里插入图片描述

第四步 设置输出 导入库相对路径

步骤如下:属性–链接器–导入库 将$(OutDir) 改成 …/…/…/lib/ 即可
在这里插入图片描述

第五步 添加LUA_BUILD_AS_DLL宏

步骤: 属性 C/C++ – 预处理器 --预处理器定义

在这里插入图片描述如下图所示 证明.lib文件生成成功
在这里插入图片描述到这里, .dll文件与.lib文件都已经生成成功了,下面教大家如何使用动态库。

第六步 使用动态库 (lua与c++结合的项目)

首先在luaDll的同级目录下创建一个first的空项目,并添加一个first.cpp的文件,如下图
在这里插入图片描述再设置附加包含目录,主要为了包含前面生成的.dll与.lib文件
步骤 属性–C/C++ --常规 --附加包含目录 …\luaDll\luadll
头文件都在这个目录

在这里插入图片描述在这里插入图片描述
指的是该目录,windows不区分大小写
因为新的first工程没有导入 lua.h 以及一些必要的头文件,而新的first工程
又需要一些头文件,所以重新定位到之前的工程去找这些头文件,也可以在项目中自行添加不要的头文件

点击生成,这是会提醒很多方法找不到,因为还没有在first工程中添加.lib文件
属性 – VC++目录 库目录 …/…/…/lib/ 添加库的相对路径
在这里插入图片描述属性 -> 配置属性 -> 链接器 -> 输入 -> 附加依赖项 添加 lualib.lib
在这里插入图片描述编写如下代码:
first.cpp

#include <iostream>
extern "C"
{
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>
}


static int get_sum(lua_State *L)
{
	int n = lua_gettop(L);
	double sum = 0;
	int i;
	for (i = 1; i <= n; ++i) {
		if (!lua_isnumber(L, i)) {
			printf("invalid argument i=");
		}
		else {
			sum += lua_tonumber(L, i);
		}
	}
	lua_pushnumber(L, n);
	lua_pushnumber(L, sum);
	return 2;
}

int main() 
{
	lua_State* L = luaL_newstate();
	luaL_openlibs(L);
	lua_register(L, "get_sum", get_sum);
	luaL_dofile(L, "test.lua");
	lua_close(L);
	L = NULL;
	system("pause");
	return 0;
}

test.lua

local n, sum = get_sum(10, 20, 30);
print("num: ", n);
print("sum: ", sum);

生成并运行
在这里插入图片描述会提示如上的错误,此时把生成的.dll文件拷贝到 first.cpp的同级目录下,这是第一种方法.
第二种方法是把.dll文件放到C:\Windows\System32中
使用任意一种方法都可以
然后生成并运行就可得到满意的结果
在这里插入图片描述

linux安装
安装luan

wget http://www.lua.org/ftp/lua-5.1.5.tar.gz

tar-xf lua-5.1.5.tar.gz

cd lua-5.1.5

make generic

make install

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值