匯出 C 函式以用於 C 或 C++ 語言可執行檔
如果 DLL 中有使用 C 撰寫且要從 C 語言或 C++ 語言模組存取的函式,則您應該使用 __cplusplus 前置處理器巨集,判斷要編譯哪種語言,接著如果要從 C++ 語言模組使用,則用 C 連結來宣告這些函式。如果您在您的 DLL 使用了這個技術並提供標頭檔,那麼就可以不用變更這些函式來提供 C 和 C++ 使用者。
下列程式碼顯示了 C 和 C++ 用戶端應用程式可以使用的標頭檔:
// MyCFuncs.h
#ifdef __cplusplus
extern "C" { // only need to export C interface if
// used by C++ source code
#endif
__declspec( dllimport ) void MyCFunc();
__declspec( dllimport ) void AnotherCFunc();
#ifdef __cplusplus
}
#endif
如果您需要將 C 函式連結至 C++ 可執行檔,而且函式宣告標頭檔尚未使用上述技術,請在 C++ 原始程式檔中執行下列程式碼來避免編譯器裝飾 C 函式名稱:
extern "C" {
#include "MyCHeader.h"
}