码龄10年 暂无认证

43383
访问
1
等级

8
获赞
3
评论

最新评论

  • 20240228阿⑤

    积分乍获得

  • 20231124ziher

    666

  • 20230909八月老师

    什麼時候發佈易語言支持庫呢

一.《LUA与C++》环境搭建

Heart 2023-05-21 08:14:10 发布 430

分类专栏: 开发技术 文章标签: LUA C++ 环境搭建

LUA库之介绍和环境搭建

参考手册文档:https://www.mianshigee.com/tutorial/lua-5.3/


1.库编译

292195509244882.png

2.警告一个

49215909248563.png

3.修改运行库 这里用的是静态库debug版本


405620110243699.png

4.导出库需要的宏 为了兼容老版本的函数

//为了要导出库 就要加上以下2个预定义
// 在luaconf.h中
// LUA_BUILD_AS_DLL 导出函数标记
// 在luxlib.h中
// LUA_COMPAT_MODULE 导出几个能加载第三方库的函数和库的 函数 为了兼容老的模块

5.不加上也可以使用 但是一些函数用不了,比如:

360603111232360.png

5.1.加上才可以使用

LUADLLHEART_EXPORTS
LUA_BUILD_AS_DLL
LUA_COMPAT_MODULE

430472911223413.png

6.库集合

588074909247380.png

7.头文件和库的引入

//包含LUA
extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
//编译库的时候最好加上3个宏 
//LUADLLHEART_EXPORTS
//LUA_BUILD_AS_DLL
//LUA_COMPAT_MODULE
//为了要导出库 就要加上以下2个预定义
// 在luaconf.h中
// LUA_BUILD_AS_DLL    导出函数标记
// 在luxlib.h中
// LUA_COMPAT_MODULE   导出几个能加载第三方库的函数和库的 函数    为了兼容老的模块
#ifndef _WIN64
#ifdef _DEBUG
#pragma  comment(lib,"../LUA532Lib/lua532luaX86D_A.lib")
#else 
#pragma  comment(lib,"../LUA532Lib/lua532luaX86_A.lib")
#endif
#else
#ifdef _DEBUG
#pragma  comment(lib,"../LUA532Lib/lua532luaX64D_A.lib")
#else 
#pragma  comment(lib,"../LUA532Lib/lua532luaX64_A.lib")
#endif
#endif

ectern "C" 的原因

extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern "C"后,会指示编译器这部分代码按C语言(而不是C++)的方式进行编译。由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名;而C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,一般只包括函数名。

ectern "C"出现情况

 这个功能十分有用处,因为在C++出现以前,很多代码都是C语言写的,而且很底层的库也是C语言写的,为了更好的支持原来的C代码和已经写好的C语言库,需要在C++中尽可能的支持C,而extern "C"就是其中的一个策略。

这个功能主要用在下面的情况:

1.C++代码调用C语言代码

2.在C++的头文件中使用

3.在多个人协同开发时,可能有的人比较擅长C语言,而有的人擅长C++,这样的情况下也会有用到


Heart1
0 0 上传作业
X
    网友评论 0条评论 0人参与
    请登陆会员1

    表情

    评论列表

×