国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

動態庫Dll的宏定義頭文件雙向使用方法小結

2019-11-08 02:16:50
字體:
來源:轉載
供稿:網友

動態庫Dll的宏定義頭文件雙向使用方法小結

這里需要提到的一點的是,在顯示調用的情況下,才需要這種頭文件,隱式調用的情況下,其實這些東西有的不必寫,請有基礎的同學自己思考.

如果想在自己的DLL文件中使用函數修改定義宏,又想同時在提供給客戶端的頭文件中讓客戶使用,有兩種方法比較方便,當然如果你直接自己

定義也未為不可,但比較費事。當然,同時你得在DEF文件中聲明導出函數,防止函數改名

第一種方法:在孫鑫老師的教程的方法:在頭文件中定義 ://定義導出宏#ifdef AUTOSCHEDULE#else#define AUTOSCHEDULE extern "C" _declspec(dllimport)#endif

然后在其的CPP文件定義:#define AUTOSCHEDULE extern "C" _declspec(dllexport)#include "XXX.h" //注意:頭文件應該在CPP的宏定義之下,否則報一個宏重定義的WARNING

因為頭文件不參與編譯,所以CPP文件單獨編譯,先定義AUTOSCHEDULE 宏,然后再展開包含的頭文件編譯,發現在宏AUTOSCHEDULE已定義,就直接編譯后面的內容。

第二種方法:熊歆斌老師的方法,估計看過他的書人并不是很多,網上沒什么人議論,但我可是看了他的書才跨過一個門檻的。非常感謝熊老師,他的書我覺得還是很中規中矩的,如果是從入門到提高,希望大家看看,不過不好說買到了,這本書比較老。

    #ifdef MATH_EXPORTS    #define MATH_API __declspec(dllexport)    #else    #define MATH_API __declspec(dllimport)    #endif

不過提前要在“項目---屬性----CC++---預處理器對話框內的:預處理器定義里自己定義一個MATH_EXPORTS”這樣在DLL中就是前者宏定義,在另外人使用頭文件時是后者引進宏定義。

這個東西看似小事情,可涉及到編譯的過程,頭文件和宏的互相影響,DLL的名稱處理,說微言大義有些過,不過很重要確實是真的。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宿州市| 翁源县| 潢川县| 贵州省| 灵丘县| 昌都县| 赫章县| 方正县| 镇原县| 公安县| 明光市| 蒙自县| 罗山县| 凤山县| 天气| 图们市| 新津县| 彰化市| 大同县| 抚宁县| 大港区| 汽车| 娱乐| 南澳县| 辽阳县| 望奎县| 班玛县| 安仁县| 佛冈县| 普宁市| 蚌埠市| 辉南县| 施秉县| 九江县| 彩票| 阜宁县| 安远县| 营山县| 宽城| 庆安县| 密山市|