C/C++ 言語の実行形式で使う C 関数のエクスポート
更新 : 2007 年 11 月
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 関数名を装飾しません。
extern "C" {
#include "MyCHeader.h"
}