好色qvod,我要找份工作,画地为牢 白刃在喉
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"包裹。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Android apk 项目一键打包并上传到蒲公英的实现方法
Android 自定义LineLayout实现满屏任意拖动功能的示例代码
android 限制某个操作每天只能操作指定的次数(示例代码详解)
Android 集成 google 登录并获取性别等隐私信息的实现代码
网友评论