匯出 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"
}