我正在尝试在我的C代码中使用.so文件以在Java中使用(对不起,我的英语不好)。我创建了一个名为libtest.so的库,其中包含一个简单函数,该函数返回一个名为display()的字符串。

这是我的C代码

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

jstring Java_com_JuionAndroid_TUNandroid_hellondk_Main_invokeNativeFunction(JNIEnv*
env,jobject this,jstring javaString)
{
    return (*env)->NewStringUTF(env, display());
}


这是我的makefile

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := test
LOCAL_SRC_FILES := test/libtest.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)

LOCAL_MODULE    := ndkmain
LOCAL_SRC_FILES := libmms-0.6.2/native.c
include $(BUILD_SHARED_LIBRARY)


编译时出现两个错误

1)error: exp.h: No such file or directory
2)undefined reference to `display'


我想在没有代码的情况下使用.so
我希望我足够清楚。

最佳答案

您可以将exp.h放在您的源文件中,并包括这样的头文件:

#include "exp.h"

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

10-14 16:29
查看更多