C++ 言語リンクの外部

1. コンセプト分析

リンカでは、異なる関数ごとに異なるシンボル名が必要です。C では 、名前ごとに関数が 1 つだけあるため、これは簡単です。内部のニーズを満たすために、C 言語コンパイラは spiff のような関数名を _spiff に変換する場合があります このアプローチは C言語連携 ( C 言語連携 )と呼ばれます。
C++では 、同じ名前が複数の関数に対応する場合があり、これらの関数は異なるシンボル名に変換する必要があります。したがって、C++ コンパイラは名前マングリング (name mangling) を実行して 、オーバーロードされた関数に対して異なるシンボル名を生成します。たとえば、 spiff (int) を _spoff_i に変換し spiff (double, double ) を _spiff_d_dに変換することができます このアプローチはC++ 言語リンケージ ( C++ 言語リンケージ)と呼ばれます。
2. 利用シーン
1. C++ プログラムで Cライブラリのプリコンパイルされた関数を 使用する
extern "C" void spiff(int);// 名前の検索には C プロトコルを使用します 
2. C++ プログラムで C++ ライブラリのプリコンパイルされた関数を使用する
方法 1: extern void spoff(int);//デフォルトで 名前検索ポイントに C++ プロトコルを使用します 
方法 2: extern "C++" void spaff(int);// 名前の検索に C++ プロトコルを使用して、  明示的に指摘します

おすすめ

転載: blog.csdn.net/banzhuantuqiang/article/details/130958896