extern "C" __cplusplus

对外提供动态库接口时,.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

上一篇:Kinova joca2


下一篇:C# DllImport的用法