一.《LUA與C++》環(huán)境搭建
LUA庫之介紹和環(huán)境搭建
參考手冊文檔:https://www.mianshigee.com/tutorial/lua-5.3/
1.庫編譯

2.警告一個(gè)

3.修改運(yùn)行庫 這里用的是靜態(tài)庫debug版本

4.導(dǎo)出庫需要的宏 為了兼容老版本的函數(shù)
//為了要導(dǎo)出庫?就要加上以下2個(gè)預(yù)定義
//?在luaconf.h中
//?LUA_BUILD_AS_DLL?導(dǎo)出函數(shù)標(biāo)記
//?在luxlib.h中
//?LUA_COMPAT_MODULE?導(dǎo)出幾個(gè)能加載第三方庫的函數(shù)和庫的?函數(shù)?為了兼容老的模塊
5.不加上也可以使用 但是一些函數(shù)用不了,比如:

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"
}
//編譯庫的時(shí)候最好加上3個(gè)宏?
//LUADLLHEART_EXPORTS
//LUA_BUILD_AS_DLL
//LUA_COMPAT_MODULE
//為了要導(dǎo)出庫?就要加上以下2個(gè)預(yù)定義
//?在luaconf.h中
//?LUA_BUILD_AS_DLL????導(dǎo)出函數(shù)標(biāo)記
//?在luxlib.h中
//?LUA_COMPAT_MODULE???導(dǎo)出幾個(gè)能加載第三方庫的函數(shù)和庫的?函數(shù)????為了兼容老的模塊
#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"的主要作用就是為了能夠正確實(shí)現(xiàn)C++代碼調(diào)用其他C語言代碼。加上extern "C"后,會指示編譯器這部分代碼按C語言(而不是C++)的方式進(jìn)行編譯。由于C++支持函數(shù)重載,因此編譯器編譯函數(shù)的過程中會將函數(shù)的參數(shù)類型也加到編譯后的代碼中,而不僅僅是函數(shù)名;而C語言并不支持函數(shù)重載,因此編譯C語言代碼的函數(shù)時(shí)不會帶上函數(shù)的參數(shù)類型,一般只包括函數(shù)名。
ectern "C"出現(xiàn)情況
?這個(gè)功能十分有用處,因?yàn)樵贑++出現(xiàn)以前,很多代碼都是C語言寫的,而且很底層的庫也是C語言寫的,為了更好的支持原來的C代碼和已經(jīng)寫好的C語言庫,需要在C++中盡可能的支持C,而extern "C"就是其中的一個(gè)策略。
這個(gè)功能主要用在下面的情況:
1.C++代碼調(diào)用C語言代碼
2.在C++的頭文件中使用
3.在多個(gè)人協(xié)同開發(fā)時(shí),可能有的人比較擅長C語言,而有的人擅長C++,這樣的情況下也會有用到