匯出 C 函式以用於 C 或 C++ 語言可執行檔
如果您在以 C 撰寫的 DLL 中具有函式,您可以使用預處理器宏,輕鬆地從 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++ 原始程式檔中 #include
,包裝 指示詞以防止編譯器裝飾 C 函式名稱:
extern "C" {
#include "MyCHeader.h"
}