国产探花免费观看_亚洲丰满少妇自慰呻吟_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的名稱處理,說微言大義有些過,不過很重要確實是真的。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 营山县| 贺州市| 连山| 云霄县| 临洮县| 鲁甸县| 许昌市| 香港 | 沁源县| 安福县| 库尔勒市| 吴江市| 苍溪县| 兴仁县| 广汉市| 溧水县| 格尔木市| 台东市| 旬阳县| 句容市| 阿拉善盟| 屯昌县| 虹口区| 东源县| 通州市| 铅山县| 增城市| 灵石县| 铁岭县| 衢州市| 朝阳市| 房山区| 同德县| 富裕县| 如东县| 齐齐哈尔市| 贺兰县| 隆尧县| 洮南市| 抚宁县| 贺兰县|