C++インタフェース関数(cでc++関数externを呼び出す)
2525 ワード
一、C++のヘッダファイルに含める必要がある:
二、Cにあります.cファイルでこの関数を呼び出す
1、c++関数を含むヘッダファイルを加える
ヘッダファイルを追加しますが、cコンパイラはc++のnamespaceやヘッダファイルなどを認識しない可能性があり、エラーが発生します!だからc++コンパイルが必要なものを
2、c++の関数をプロトタイプ宣言する.
#ifdef __cplusplus
extern "C" {
#endif
const char *dmNmsAgentGetFirstPeerId();
const char *dmNmsAgentGetNextPeerId();
#ifdef __cplusplus
}
#endif
C++のcppファイルには、この関数の実装が必要です.const char *dmNmsAgentGetFirstPeerId() {
return Agent::getFirstPeerId();
}
const char *dmNmsAgentGetNextPeerId() {
return Agent::getNextPeerId();
}
二、Cにあります.cファイルでこの関数を呼び出す
1、c++関数を含むヘッダファイルを加える
ヘッダファイルを追加しますが、cコンパイラはc++のnamespaceやヘッダファイルなどを認識しない可能性があり、エラーが発生します!だからc++コンパイルが必要なものを
#ifdef __cplusplus #endif c++ 。
2、c++の関数をプロトタイプ宣言する.
const char *dmNmsAgentGetFirstPeerId()
const char *dmNmsAgentGetNextPeerId()
、c++ , , 。
eg: :
static size_t peerIdCount_;
: ( )
size_t Agent::peerIdCount_=0;
。
、 strcpy
strcpy , , ( )。
char * , strcpy, 。
char * str =fun()
str 。