頭文件+宏,完美解決聲明函數(shù)問題!
2. 編譯器宏定義
如果在寫庫代碼的時(shí)候,使用的是 C++,而使用者使用的是 C 語言,那么就需要對(duì)庫函數(shù)進(jìn)行 extern “C” 聲明,讓編譯器不要對(duì)函數(shù)的名稱進(jìn)行改寫。
編譯器 g++ 預(yù)定義了宏 __cplusplus,因此,在頭文件中,就利用了這個(gè)宏,在 MY_API 中添加 extern "C" 聲明。
四、Windows 平臺(tái)場(chǎng)景分析
1. 編譯生成庫文件
(1) 生成靜態(tài)庫
在靜態(tài)庫中,不需要 __declspec(dllexport/dllimport) 的聲明,因此只需要區(qū)分編譯器即可(gcc or g++),在編譯選項(xiàng)中定義宏 MY_API_STATIC,即可得到最終的 MY_API 為:
gcc 編譯器:#define MY_API
g++ 編譯器:#define MY_API extern "C"
(2) 生成動(dòng)態(tài)庫
在編譯選項(xiàng)中,定義宏 MY_API_EXPORTS,這樣最終得到的 MY_API 就會(huì)變成:
gcc 編譯器:#define MY_API __declspec(dllexport)
g++ 編譯器:#define MY_API extern "C" __declspec(dllexport)
2. 使用庫
在使用庫的應(yīng)用程序中,也需要在代碼中 include 這個(gè)頭文件,然后加上編譯選項(xiàng)中定義的各種宏,來生成對(duì)應(yīng)的 MY_API 宏定義。
(1) 使用靜態(tài)庫
需要在編譯選項(xiàng)中定義 MY_API_STATIC,即可得到最終的 MY_API 為:
gcc 編譯器:#define MY_API
g++ 編譯器:#define MY_API extern "C"
(2) 使用動(dòng)態(tài)庫
在編譯選項(xiàng)中不需要任何宏定義,即可得到最終的 MY_API 為:
gcc 編譯器:#define MY_API extern "C" __declspec(dllimport)
g++ 編譯器:#define MY_API __declspec(dllimport)
這樣就相當(dāng)于聲明導(dǎo)入庫函數(shù)了。
五、Linux 平臺(tái)場(chǎng)景分析
Linux 平臺(tái)下就簡(jiǎn)單多了,只需要注意編譯器的問題,而沒有導(dǎo)出和導(dǎo)入之分。
發(fā)表評(píng)論
請(qǐng)輸入評(píng)論內(nèi)容...
請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字
最新活動(dòng)更多
-
11月20日火熱報(bào)名中>> 2024 智能家居出海論壇
-
11月28日立即報(bào)名>>> 2024工程師系列—工業(yè)電子技術(shù)在線會(huì)議
-
12月19日立即報(bào)名>> 【線下會(huì)議】OFweek 2024(第九屆)物聯(lián)網(wǎng)產(chǎn)業(yè)大會(huì)
-
即日-12.26火熱報(bào)名中>> OFweek2024中國(guó)智造CIO在線峰會(huì)
-
即日-2025.8.1立即下載>> 《2024智能制造產(chǎn)業(yè)高端化、智能化、綠色化發(fā)展藍(lán)皮書》
-
精彩回顧立即查看>> 【在線會(huì)議】多物理場(chǎng)仿真助跑新能源汽車
推薦專題
- 1 腦機(jī)接口芯片,華為出了新專利!
- 2 今年諾獎(jiǎng)對(duì)人工智能的重視,給我們的基礎(chǔ)教育提了個(gè)醒
- 3 銀行業(yè)AI大模型,從入局到求變
- 4 巨頭搶布局,VC狂撒錢,為了能讓「AI讀心」這些公司卷瘋了
- 5 阿斯麥ASML:“骨折級(jí)”洋相,又成AI第一殺手?
- 6 蘋果市值創(chuàng)新高,iPhone 16能否助力突破4萬億美元大關(guān)?
- 7 一場(chǎng)“載入史冊(cè)”的發(fā)布會(huì),讓馬斯克失去了4700億
- 8 百度谷歌比較研究2024:中美“遠(yuǎn)古AI龍頭”的現(xiàn)狀與趨勢(shì)
- 9 洞見AI風(fēng)潮 第二屆vivo藍(lán)河操作系統(tǒng)創(chuàng)新賽開啟招募
- 10 地平線開啟配售,阿里百度各砸5000萬美金,市值最高超500億
- 高級(jí)軟件工程師 廣東省/深圳市
- 自動(dòng)化高級(jí)工程師 廣東省/深圳市
- 光器件研發(fā)工程師 福建省/福州市
- 銷售總監(jiān)(光器件) 北京市/海淀區(qū)
- 激光器高級(jí)銷售經(jīng)理 上海市/虹口區(qū)
- 光器件物理工程師 北京市/海淀區(qū)
- 激光研發(fā)工程師 北京市/昌平區(qū)
- 技術(shù)專家 廣東省/江門市
- 封裝工程師 北京市/海淀區(qū)
- 結(jié)構(gòu)工程師 廣東省/深圳市