AR# 19240

|

11.1 EDK - LibGen でコンパイルした関数を C++ アプリケーションで使用する方法

説明

キーワード : name, mangling, C, GNU, compiler, gcc, g++, 名前, マングル, コンパイラ

LibGen でコンパイルした関数を C++ アプリケーションで使用するにはどうしたらよいですか。

ソリューション

ソース ファイルのコンパイルに C++ コンパイラまたはC コンパイラのいずれを使用するかによって、シンボル名の命名規則が異なります。そのため、C および C++ コードの両方を混在してそれぞれに異なるコンパイラを使用する場合、実際には参照先あるのに、参照先がないと認識されます。一般的に、C++ コンパイラは C++ リンケージのシンボルをコンパイルし、C コンパイラは C リンケージのシンボルをコンパイルします。C++ と C コードを混合する場合は、C++ コンパイラで extern "C" { } 構文を使用して、外部 C リンケージがあることを示す必要があります。この構文内で、外部 C オブジェクトの宣言をラップしてください。EDK ヘッダ ファイルに宣言が含まれる EDK で提供される標準の外部参照の場合は、次のような構文を使用してください。

extern ''C'' {
#include ''xparameters.h''
#include ''gpio.h''
}

これにより、xparameters.h および gpio.h で C リンケージとして記述されているエンティティへの参照がコンパイラで作成されるようになります。


AR# 19240
日付 12/15/2012
ステータス アクティブ
種類 一般
People Also Viewed