undefined reference to 之原因分析

問題描述:

    安卓ndk-build的時候出現如下錯誤:

 

 

分析問題:

該問題一般由動態庫的缺失,或者接口函數未實現所導致。然而該函數在代碼中已實現,

Cpp中代碼如下:

ErrCode_e Classifier_Init_From_Json( Classifier_t * pClassifier, const char * strRulePath )

{

    ... ...

}

 

H頭文件中聲明如下:

ErrCode_e Classifier_Init_From_Json( Classifier_t * pClassifier, const char * strRulePath );

於是考慮是否未加extern “C”的原因,於是加上如下:

 

 

 

再編譯,報錯如下:

 

 

 

最終查閱資料:

Thus, the same .h (or .hh or .hpp or what-have-you) could be interpreted as C or C++ at different times,

 if different compilation units include them. 

If you want the prototypes in the .h file to refer to C symbol names,

 then they must have extern "C" when being interpreted as C++, 

and they should not have extern "C" when being interpreted as C (as in your case you were getting an error!).

#ifdef __cplusplus

  extern "C" { #endif 

// Your prototype or Definition  #ifdef __cplusplus

  } #endif

http://stackoverflow.com/questions/10307762/error-expected-before-string-constant

缺失cpp宏的控制。

 

 

 

解決問題:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章