問題描述:
安卓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宏的控制。
解決問題: