用c文件调用c++的so库,一开始百度后,将so库源码中希望暴露出来的接口前加上extern “C”,以及条件编译,头文件中形如:
#ifndef __cplusplusextern "C"{#endiffunc_1;func_2;#ifndef __cplusplus}#endif
并将该头文件添加到测试工程,然后在测试工程里调用so库,编译时报错:expected identifier or ‘(‘ before string constant。
解决方案:
1.将库源代码中的头文件改为:
extern "C"{func_1;func_2;}
2.将测试工程中对应的头文件改为:
#ifdef __cplusplusextern "C"{#endiffunc_1;func_2;#ifdef __cplusplus}#endif
3.添加c文件,调用该头文件中的函数,编译通过