VS2017编译lua源码指北

为什么要生成dll?

https://www.lua.org/manual/5.4/readme.html 官网中有这么一段话, 意思是Windows平台建议生成dll, 而不是静态库,但是为什么有这个建议呢? 直接看第五节
在这里插入图片描述

一、下载lua源码并解压

https://github.com/lua/lua/releases


二、打开Visual Studio 2017创建一个空的项目

在这里插入图片描述


三、导入资源文件

解决方案资源管理器>>资源文件>>右键添加>>现有项>>选择解压好的lua源码


四、移除lua.c和luac.c文件(可选操作)

解决方案资源管理器>>资源文件>>找到lua.c文件>> 右键移除


五、添加预处理宏

右键解决方案>>属性>>C/C++>>预处理器>>预处理器定义>>在最前面添加LUA_BUILD_AS_DLL;

Q1: 这里我们为什么要添加预处理宏呢?

因为luaconf.h文件中,有这么一段:

#if defined(LUA_BUILD_AS_DLL)	/* { */

#if defined(LUA_CORE) || defined(LUA_LIB)	/* { */
#define LUA_API __declspec(dllexport)
#else						/* }{ */
#define LUA_API __declspec(dllimport)
#endif						/* } */

#else				/* }{ */

#define LUA_API		extern

#endif				/* } */
Q2: 那么 __declspec(dllexport) 有什么作用呢?

其作用是导出函数到dll中,给接口提供一个外部调用方式,能够使程序在没有导入lib库时, 通过dll动态调用。

也就是说导出的dll如果没有 __declspec(dllexport) 符号就算是导出失败

Q3: 如何查看导出的dll是不是坏的

VS 提供了一个工具:bumpbin , 用VS自带的命令行打开即可

dumpbin /exports xxx.dll

结果如下:
在这里插入图片描述


六、选择生成dll模式

右键解决方案>>属性>>常规>>项目默认值>>配置类型选择dll


七、build

八、采用nmake方式编译

传送门

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值