首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在jni中链接预构建

如何在jni中链接预构建
EN

Stack Overflow用户
提问于 2015-08-19 05:56:12
回答 2查看 398关注 0票数 1

我已经创建了一个带有声明的头文件"abc.h“

代码语言:javascript
运行
复制
int abc();

然后,我创建了一个带有定义的.cpp文件"abc.cpp“。

代码语言:javascript
运行
复制
int abc()
{ 
  return 10;
}

现在,我从上面的文件创建了一个库libabc.so。

然后,我创建了一个HelloWorld安卓项目。然后,我在jni中创建了一个lib文件夹,并将libabc.so文件放入其中。

现在,我在jni文件夹中创建了另一个文件"xyz.cpp“,希望使用abc()函数。但是,当我运行ndk-build命令时,我会得到这个错误。Error: undefined reference to function abc

这是xyz.cpp文件.

代码语言:javascript
运行
复制
int getAbcFunction()
{
    int value = abc();
    // return value;
}

jni中的Android.mk -> lib文件夹

代码语言:javascript
运行
复制
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := abc-prebuild
LOCAL_SRC_FILES := libabc.so
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include

include $(PREBUILT_SHARED_LIBRARY)

jni文件夹中的Android.mk

代码语言:javascript
运行
复制
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

# Here we give our module name and source file(s)
LOCAL_MODULE    := helloworld
LOCAL_SRC_FILES := xyz.cpp

LOCAL_SHARED_LIBRARIES := abc-prebuild
include $(BUILD_SHARED_LIBRARY)

如何解决这个错误。

EN

回答 2

Stack Overflow用户

发布于 2015-08-19 06:26:33

#include "abc.h"添加到xyz.cpp开头

票数 0
EN

Stack Overflow用户

发布于 2015-08-25 09:51:41

如果您使用的是Android,默认情况下将忽略Makefile,因为所有配置都应该使用gradle或gradle-实验性插件。

但是这些本地预构建还不支持,因此您应该禁用默认支持并调用ndk-build:

代码语言:javascript
运行
复制
android.sources{
    main.jni {
        source {
            srcDirs 'src/main/none' //deactivate built-in compilation
        }
    }
    main.jniLibs {
        source {
            srcDir 'src/main/libs' //integrate .so files from src/main/libs
        }
    }
}

顺便说一句,这与你的问题并不完全相关,但你有:

代码语言:javascript
运行
复制
LOCAL_SRC_FILES := libabc.so

这意味着你打算使用这个预先建成的(armeabi?)对于所有NDK支持的架构(armeabi、armeabi-v7a、arm64-v8a、x86、x86_64、mips、mips64),即使它们不兼容。你应该这么做

代码语言:javascript
运行
复制
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libabc.so

相反,拥有不同版本的.so文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32087522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档