欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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