当前位置: 移动技术网 > IT编程>移动开发>Android > Android之ndk编译出现"undefined reference to method"解决办法

Android之ndk编译出现"undefined reference to method"解决办法

2017年12月27日  | 移动技术网IT编程  | 我要评论

好色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"包裹。


如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网