我已经建立了一个静态库(armv64-v8a体系结构的main.a),在其根文件夹中有一个main.cpp,它公开了如下静态函数:
void main::global(void * _o, void * _i);
我的要求是在android中构建包装器,然后从android应用程序中调用此函数。
我尝试了以下操作:
#include <jni.h>
#include <string.h>
#include <stdlib.h>
#include <main.h>
JNIEXPORT void JNICALL Java_com_example_test_sendData(JNIEnv *env, jobject obj, jbyteArray outData, jbyteArray inData)
{
}
APP_ABI := arm64-v8a
APP_PLATFORM := android-23
LOCAL_PATH := $(call my-dir)
########################
# prepare static lib
include $(CLEAR_VARS)
LOCAL_MODULE := main
LOCAL_SRC_FILES := static/$(TARGET_ARCH_ABI)/main.a
include $(PREBUILT_STATIC_LIBRARY)
########################
########################
# prepare export
include $(CLEAR_VARS)
LOCAL_MODULE := export
LOCAL_SRC_FILES := export.cpp
LOCAL_STATIC_LIBRARIES := main
include $(BUILD_SHARED_LIBRARY)
########################
现在,如果我运行ndk-build
命令,它将引发如下错误:
[arm64-v8a] Compile++ : export <= export.cpp
jni/export.cpp:4:10: fatal error: 'main.h' file not found
#include <main.h>
^~~~~~~~~
1 error generated.
make: *** [obj/local/arm64-v8a/objs/export/export.o] Error 1
请帮助我解决此问题。
试图将#include <main.h>
更改为#include "main.h"
,但是它不起作用并抛出相同的错误。