1

我正在尝试使用这些驱动程序提供的共享库为我的 android 应用程序编译 ndk 模块: http ://www.extendo-printer.de/fileadmin/user_upload/extendo/Drivers/X-56-Hengstler-Extendo-LinuxDrivers -S684018-R2-V1_01-FINAL-2009JUL15.zip

我可以使用默认值编译(使用 Hello JNI 示例)。但是,当我将代码添加到我需要使用的.so 库的 C 文件中时,我得到编译错误,指出它找不到库中定义的方法。当我尝试将它包含在 LOCAL_SRC_FILES 的 Android.mk 中时,我在构建时收到警告(不支持的文件扩展名)但它构建了,但我的本机方法调用失败(java.lang 链接错误)。有没有一种适当的方法来包含 .so 而不是在您的本机 C 代码中引用它的函数?

当前的 Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := x56-jni
LOCAL_LDLIBS := libExoApi.so
LOCAL_SRC_FILES := x56-jni.c

include $(BUILD_SHARED_LIBRARY)

我尝试使用 LOCAL_SHARED_LIBRARIES 以及相同的构建错误。我还尝试使用“,”和 \ 语法添加到如上所述的 LOCAL_SRC_FILES (LOCAL_SRC_FILES := x56-jni.c libExoApi.so)。

更新 我已将 Android.mk 更新为:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE    := libExoApi 
LOCAL_SRC_FILES := libExoApi.so

include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)

LOCAL_MODULE    := x56-jni
LOCAL_LDLIBS := libExoApi.so
LOCAL_SRC_FILES := x56-jni.c

LOCAL_SHARED_LIBRARIES := libExoApi

include $(BUILD_SHARED_LIBRARY)

这失败了:

[exec]  Unable to recognise the format of the input file `/var/folders/_6/6jjydzjs457fnpsc9_5cgl980000gn/T//michael/usbserial-generated/libs/armeabi/libExoApi.so'
4

0 回答 0