c ++オブジェクトfieをcオブジェクトファイルにリンクする

私はc + +ファイルとcファイルを持っていると仮定します。両方のために作成されたオブジェクトファイル。今私は両方を1つの実行可能ファイルにリンクする必要があります。私が試している間、それはC ++に関するエラーを出しています。誰もそれについて私を助けることができますか?

3
nl ru de
いいえ、あなたが情報を提供しない場合はありません。
追加された 著者 user529758,
私は gcc&g ++ を使用しています。私はcppファイルを持っています。これにはいくつかのstl機能も含まれています。今私はこの CPP 関数を別の C プロジェクトで使用したいと考えています。どうやってするか。 ??
追加された 著者 Kranthi,

2 答え

まず、Cファイルから呼び出されるC ++ファイル内のすべての関数は、 extern "C" とマークする必要があります。

extern "C" int some_function();

これは、C ++コンパイラに、 マンガ ではないことを伝えます。名。

続行するには、Cソースから、もちろん、クラス、名前空間、参照、およびその他のC ++固有の機能などのC ++機能を使用することはできません。

3
追加された
@Kranthi Cソースファイルから関数 test を呼び出すことは大丈夫です。(C ++コンパイラでコンパイルされているので)必要な数だけC ++固有のものを含むことができます。
追加された 著者 Some programmer dude,
私は自分のプログラムにSTLの文字を使っています。このため、バグがたくさんあるので、どうやってリンケージをするのですか? test.c '#include #include namespace stdを使用します。 extern "C" void test(){vector a; a.push_back(100); } '
追加された 著者 Kranthi,

Take a look at this page: http://dsc.sun.com/solaris/articles/mixing.html

記事 同じプログラムでCとC ++のコードを混在させる

ここでは、すべての必要な情報を見つけることができます:

extern "C" 
{
    #include "header.h"
}

#ifdef __cplusplus
extern "C" {

そしてずっと...

0
追加された