对外提供动态库接口时,.h文件中的函数声明多以 C 方式展现;而动态库的实现可能是 C 和 C++ 的混合编程,这样就需要 extern "C";
通常.c/.cpp文件起始会包含自己的.h,这样在预处理时展开,函数被声明且告诉编译器使用 C 形式编译,这样动态库里的的函数符号就是函数名称。
#ifdef __cplusplus extern "C" { #endif void fun1(void); #ifdef __cplusplu } #endif
所以,当出现使用者出现 “找不到函数入口” 等问题的适合,需要检查自己的动态库代码,.h文件加 extern "C" 重新编译后再提供。
eg:System.EntryPointNotFoundException: Unable to find an entry point named ''fun1" in shared library 'libXXXX.so'.
https://blog.csdn.net/u013139008/article/details/83387349