Android NDK: файл iostream не найден - PullRequest
0 голосов
/ 04 февраля 2019

Я попробовал довольно много предложений относительно этой проблемы, но ни одно из них не решило мою проблему.

Это то, что я даю в качестве команды:

 C:\Users\{name}\Desktop\MyApplication\libraries\tess-two-master\tess-two\jni> C:\Users\{name}\AppData\Local\Android\Sdk\android-ndk-r19\ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./Android.mk

Я являюсьне удалось скомпилировать com_googlecode_tesseract_android /./ src / api / baseapi.cpp Это дает мне эту ошибку:

Android NDK: WARNING:com_googlecode_tesseract_android/Android.mk:tess: non-system libraries in linker flags: -latomic
Android NDK:     This is likely to result in incorrect builds. Try using LOCAL_STATIC_LIBRARIES
Android NDK:     or LOCAL_SHARED_LIBRARIES instead to list the library dependencies of the
Android NDK:     current module

com_googlecode_tesseract_android/./src/api/baseapi.cpp:45:10: fatal error
    'iostream' file not found
#include <iostream>
     ^~~~~~~~~~
1 error generated.
make: *** [obj/local/arm64-v8a/objs/tess/./src/api/baseapi.o] Error 1

Вот мой Application.mk

    APP_STL:= c++_shared
    APP_ABI := armeabi-v7a x86 arm64-v8a x86_64
    APP_OPTIM := release
    APP_PLATFORM := android-16
    APP_CPPFLAGS += -fexceptions -frtti
    NDK_TOOLCHAIN_VERSION := clang

Вот мой Android.mk

     LOCAL_PATH := $(call my-dir)
     TESSERACT_PATH := $(LOCAL_PATH)/com_googlecode_tesseract_android/src
     LEPTONICA_PATH := $(LOCAL_PATH)/com_googlecode_leptonica_android/src
     LIBJPEG_PATH := $(LOCAL_PATH)/libjpeg
     LIBPNG_PATH := $(LOCAL_PATH)/libpng

     # Just build the Android.mk files in the subdirs
     include $(call all-subdir-makefiles)

Та же ошибка появляется для всех 4 заголовков в baseapi.cpp -

#include <iostream>
#include <string>
#include <iterator>
#include <fstream>

Если кто-нибудь может помочь мне выяснить, в чем здесь проблема, это будетотличный.Спасибо.

PS: я использую NDK r19

1 Ответ

0 голосов
/ 04 февраля 2019

В этой ситуации ваш ndk-build не загружает файл Application.mk автоматически.Вы должны указать это явно:

…ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./Android.mk NDK_APPLICATION_MK=./Application.mk

Или вы можете запустить ndk-build из каталога tess-two (тот, что выше jni ).В этом случае ndk-build найдет оба .mk файла, и вам не нужно указывать NDK_PROJECT_PATH:

…ndk-build

Единственное отличие состоит в том, что вывод (*Каталоги 1019 * obj и libs ) будут созданы рядом, а не в каталоге jni .

...