2

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 を使用したいので、十分に明確であることを願っています。

4

2 に答える 2

1

.mk ファイルを変更したので

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := libtest
LOCAL_SRC_FILES := libtest.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../../libtest/jni/include
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)
于 2012-07-23T10:13:30.363 に答える
1

.a ファイルにはヘッダー ファイルはなく、エンコードされた .h-files ではなく、基本的にバイト ストリームであるコンパイル済みコードのみですこれは 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)
于 2012-07-19T11:41:05.080 に答える