gpt4 book ai didi

c - NDK-在C文件中使用.a文件

转载 作者:太空宇宙 更新时间:2023-11-03 23:32:52 25 4
gpt4 key购买 nike

我正在尝试在我的 C 代码中使用 .a 文件以在 Java 中使用(抱歉我的英语不好)。我为自己创建了一个名为 libtest.a 的静态库。现在,当我包含该库中存在的文件时,会出现错误,因为没有这样的文件或目录。

我已将 libtest.a 放在我的 Android.mkApplication.mk 所在的同一文件夹中

C 代码:

#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <jni.h>
#include <exp.h> //the header in libtest.a

这是我的生成文件:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := libtest
LOCAL_SRC_FILES := libtest.a

include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := socket
LOCAL_SRC_FILES := source/interface.c source/file.c
LOCAL_LDFLAGS += libtest.a

include $(BUILD_SHARED_LIBRARY)

编译时出现如下错误

error: exp.h: No such file or directory

我想在没有它的代码的情况下使用 .a,所以我希望我足够清楚。

最佳答案

.a 文件中没有 头文件,只有编译后的代码(本质上是字节流),而不是编码后的 .h 文件。这不是 Java。要使用您的 libtest.a,您必须提供 exp.h 文件以及任何依赖的头文件。

你应该为此使用 LOCAL_STATIC_LIBRARIES

include $(CLEAR_VARS)
LOCAL_MODULE := libtest
LOCAL_SRC_FILES := libtest.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := socket
LOCAL_SRC_FILES := source/interface.c source/file.c
LOCAL_STATIC_LIBRARIES += libtest

include $(BUILD_SHARED_LIBRARY)

关于c - NDK-在C文件中使用.a文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11559872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com