C++インタフェース関数(cでc++関数externを呼び出す)

2525 ワード

一、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      。