您的位置:首页 > 移动开发 > Android开发

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

2017-12-10 21:43 776 查看

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 <stdio.h>
int add(int a, int b);


csapp.c文件

#include "csapp.h"
int add(int a, int b)
{
return a + b;
}


test.cpp文件

#include <csapp.h>

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"包裹
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐