欢迎光临散文网 会员登陆 & 注册

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

2023-06-07 18:11 作者:迪大学院  | 我要投稿

LUA库之介绍和环境搭建

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


1.库编译

2.警告一个

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


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

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

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

5.1.加上才可以使用

LUADLLHEART_EXPORTS
LUA_BUILD_AS_DLL
LUA_COMPAT_MODULE

6.库集合

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++,这样的情况下也会有用到



一.《LUA与C++》环境搭建的评论 (共 条)

分享到微博请遵守国家法律