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

目的に合ったトピックをクリックしてください

さらに詳しくは次のトピックをクリックしてください

参照

概念

DLL からのエクスポート