0

プロジェクトの.soファイルのライブラリ関数にアクセスするために使用されるヘッダーファイル(xh)の1つを使用して、他のcプロジェクトで使用される.soライブラリを生成します。私のプロジェクトでは非常に単純です。x.header をインクルードし、-lx.so ファイルと (.so ファイルの) ライブラリ ソース ディレクトリへのパスを指定して、C リンカを eclipse し、プロジェクトをコンパイルします。

質問は次のとおりです。上記のeclipseで説明したcプロジェクトのように、このcライブラリをc ++プロジェクトで使用するにはどうすればよいですか?

Eclipse の C++ コードで同じことを行い、C++ リンカー ライブラリに .so ファイルを追加して、ライブラリ ソース パスも含めます。その後、ヘッダーを追加してライブラリ関数を使用しようとしましたが、Eclipseは「関数への未定義の参照...」というエラーを出し、コードをコンパイルできません。

ありがとうございました。

4

1 に答える 1

2

C でコンパイルされたコードを C++ で使用するにextern "C" { ... }は、ヘッダーでラップする必要があります [C++ コンパイラでコンパイルする場合は、ライブラリのコンテンツ自体も]。

コードが C と C++ の両方でコンパイルできることを確認するには、次を使用できます。

#idfef __cplusplus
extern "C" {
#endif

int func(double d); 

... 

#idfef __cplusplus
}  // end of extern "C"
#endif

そうextern "C"すれば、C++ コンパイラを使用している場合にのみ発生し、C コンパイラでエラーが発生することはありません。

于 2013-06-08T22:03:51.660 に答える