C++で作ったオブジェクトファイルはそのままではCのプログラムでリンクできない。これは関数のシンボル名がC++ではオーバーロードなどの情報が含まれるためCとは異なるから。
Cのプログラムでリンクできるようにするためにはリンケージ指定を行う。
リンケージ指定は次のとおり。
extern "言語" 関数プロトタイプ
複数あるときは
extern "言語" { 関数プロトタイプ ... }
これで記述した関数は指定した言語でリンクできる形式で作成される。Cの関数として作成する場合は次のとおり。
extern "C" { void func1(); void func2(); }