简体   繁体   English

Android NDK使用静态库 - >函数尚未声明

[英]Android NDK using static Library -> function has not been declared

I'm testing the integrated static libraries in an Android app. 我正在测试Android应用中的集成静态库。 Unfortunately the compilation does not work! 不幸的是编译不起作用! can you help me here? 你能在这帮我吗?

I always get the error: 我总是得到错误:

jni/main-jni.cpp: In function 'jint Java_com_tmz_cc_MainActivity_test1(JNIEnv*,     jobject)': jni/main-jni.cpp:10:23: error: 'FileSync' has not been declared
make: *** [obj/local/armeabi/objs/ccSharedLib/main-jni.o] Error 1

I thought by the linker would be "FileSync" known. 我认为链接器会以“FileSync”而闻名。

Given the following: 鉴于以下内容:

project
+- ..
+-jni
  +- include 
  +- prebuild
     +- libFileSync.a
  +- Android.mk
  +- main-jni.cpp

Android.mk Android.mk

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE    := fileSyncStaticLibrary
LOCAL_SRC_FILES := prebuild/libFileSync.a
LOCAL_EXPORT_C_INCLUDES := include/
include $(PREBUILT_STATIC_LIBRARY)


include $(CLEAR_VARS)
LOCAL_MODULE    := ccSharedLib
LOCAL_SRC_FILES := main-jni.cpp
LOCAL_STATIC_LIBRARIES := fileSyncStaticLibrary
include $(BUILD_SHARED_LIBRARY)

main-jni.cpp 主jni.cpp

#include <jni.h>
#include <stdio.h>

extern "C" {

jint Java_com_tmz_cc_MainActivity_test1( JNIEnv*  env, jobject  thiz) {


    //FileSync *file = new FileSync("connection");
    jstring seperator = FileSync::getPathSeperator();

    jint temp = 0;
    return temp;
}

jint Java_com_tmz_cc_MainActivity_test2( JNIEnv*  env, jobject  thiz) {

    jint temp = 0;
    return temp;
}

}

Error: 错误:

"Compile++ thumb : ccSharedLib <= main-jni.cpp
Reaping winning child 0x012d6098 PID 19632680 
Cleaning up temp batch file C:\Users\jpenning\AppData\Local\Temp\make4148-1.bat
CreateProcess(C:\android\ndk\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-g++.exe,C:/android/ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/arm-linux-androideabi-g++ -MMD -MP -MF ./obj/local/armeabi/objs/ccSharedLib/main-jni.o.d -fpic -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv5te -mtune=xscale -msoft-float -fno-exceptions -fno-rtti -mthumb -Os -g -DNDEBUG -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 -Iinclude/ -IC:/android/ndk/sources/cxx-stl/system/include -Ijni -DANDROID -Wa,--noexecstack -IC:/android/ndk/platforms/android-14/arch-arm/usr/include -c jni/main-jni.cpp -o ./obj/local/armeabi/objs/ccSharedLib/main-jni.o,...)
Live child 0x12d6098 (obj/local/armeabi/objs/ccSharedLib/main-jni.o) PID 19632680 
jni/main-jni.cpp: In function 'jint Java_com_tmz_cc_MainActivity_test1(JNIEnv*, jobject)':
jni/main-jni.cpp:10:23: error: 'FileSync' has not been declared
make: *** [obj/local/armeabi/objs/ccSharedLib/main-jni.o] Error 1
Reaping losing child 0x12d6098 PID 19632680 
Removing child 0x12d6098 PID 19632680 from chain.

您必须在main-jni.cpp包含正确的头文件,例如#include <FileSync.h>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM