Android之ndk编译出现"undefined reference to method"解决办法
程序员文章站
2022-04-03 17:11:47
Android之ndk编译出现"undefined reference to method"解决办法。
1、问题
我自己写了C的头文件和实现的C文件,然后编...
Android之ndk编译出现"undefined reference to method"解决办法。
1、问题我自己写了C的头文件和实现的C文件,然后编译成csapp.so库,然后在jni里面写了Android.mk文件和Application.mk文件,配置确保已经没问题,然后csapp.so的位置和头文件都放对了,然后写了一个测试test.cpp文件,然后这个里面调用了csapp.so里面的方法,然后我 ndk-build就出现了下面的错误
"undefined reference to method
csapp.h文件
#include int add(int a, int b);
csapp.c文件
#include "csapp.h" int add(int a, int b) { return a + b; }
test.cpp文件
#include int function() { return add(1, 2); }2、分析
我的csapp.so,里面的确实现了这个test.cpp里面调用的方法,然后我的mk文件也的确没有错误,一般出现这个错误提示,要么是没加上这个so依赖,要么就是so里面没有实现这个方法,后面上网查了下
3、原因是因为我C++文件调用了C语言库的函数,链接找不到,解决办法在,在cpp文件里面的头文件添加extern "C"声明就行
test.cpp
extern "C" { #include "csapp.h" } int funcion() { return add(1, 2); }4、总结
在c++代码中链接c语言的库,要记得在cpp文件里面的C头文件加上 extern "C"包裹。
上一篇: 基因相关性C++