頭文件+宏,完美解決聲明函數(shù)問題!
2. 編譯器宏定義
如果在寫庫(kù)代碼的時(shí)候,使用的是 C++,而使用者使用的是 C 語言,那么就需要對(duì)庫(kù)函數(shù)進(jìn)行 extern “C” 聲明,讓編譯器不要對(duì)函數(shù)的名稱進(jìn)行改寫。
編譯器 g++ 預(yù)定義了宏 __cplusplus,因此,在頭文件中,就利用了這個(gè)宏,在 MY_API 中添加 extern "C" 聲明。
四、Windows 平臺(tái)場(chǎng)景分析
1. 編譯生成庫(kù)文件
(1) 生成靜態(tài)庫(kù)
在靜態(tài)庫(kù)中,不需要 __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)庫(kù)
在編譯選項(xiàng)中,定義宏 MY_API_EXPORTS,這樣最終得到的 MY_API 就會(huì)變成:
gcc 編譯器:#define MY_API __declspec(dllexport)
g++ 編譯器:#define MY_API extern "C" __declspec(dllexport)
2. 使用庫(kù)
在使用庫(kù)的應(yīng)用程序中,也需要在代碼中 include 這個(gè)頭文件,然后加上編譯選項(xiàng)中定義的各種宏,來生成對(duì)應(yīng)的 MY_API 宏定義。
(1) 使用靜態(tài)庫(kù)
需要在編譯選項(xiàng)中定義 MY_API_STATIC,即可得到最終的 MY_API 為:
gcc 編譯器:#define MY_API
g++ 編譯器:#define MY_API extern "C"
(2) 使用動(dòng)態(tài)庫(kù)
在編譯選項(xiàng)中不需要任何宏定義,即可得到最終的 MY_API 為:
gcc 編譯器:#define MY_API extern "C" __declspec(dllimport)
g++ 編譯器:#define MY_API __declspec(dllimport)
這樣就相當(dāng)于聲明導(dǎo)入庫(kù)函數(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)更多
-
3月27日立即報(bào)名>> 【工程師系列】汽車電子技術(shù)在線大會(huì)
-
4月30日立即下載>> 【村田汽車】汽車E/E架構(gòu)革新中,新智能座艙挑戰(zhàn)的解決方案
-
5月15-17日立即預(yù)約>> 【線下巡回】2025年STM32峰會(huì)
-
即日-5.15立即報(bào)名>>> 【在線會(huì)議】安森美Hyperlux™ ID系列引領(lǐng)iToF技術(shù)革新
-
5月15日立即下載>> 【白皮書】精確和高效地表征3000V/20A功率器件應(yīng)用指南
-
5月16日立即參評(píng) >> 【評(píng)選啟動(dòng)】維科杯·OFweek 2025(第十屆)人工智能行業(yè)年度評(píng)選
推薦專題
- 1 UALink規(guī)范發(fā)布:挑戰(zhàn)英偉達(dá)AI統(tǒng)治的開始
- 2 北電數(shù)智主辦酒仙橋論壇,探索AI產(chǎn)業(yè)發(fā)展新路徑
- 3 “AI寒武紀(jì)”爆發(fā)至今,五類新物種登上歷史舞臺(tái)
- 4 降薪、加班、裁員三重暴擊,“AI四小龍”已折戟兩家
- 5 國(guó)產(chǎn)智駕迎戰(zhàn)特斯拉FSD,AI含量差幾何?
- 6 光計(jì)算迎來商業(yè)化突破,但落地仍需時(shí)間
- 7 東陽(yáng)光:2024年扭虧、一季度凈利大增,液冷疊加具身智能打開成長(zhǎng)空間
- 8 地平線自動(dòng)駕駛方案解讀
- 9 封殺AI“照騙”,“淘寶們”終于不忍了?
- 10 優(yōu)必選:營(yíng)收大增主靠小件,虧損繼續(xù)又逢關(guān)稅,能否乘機(jī)器人東風(fēng)翻身?