Связывание библиотеки C ++ в андроид студии [freetype] - PullRequest
0 голосов
/ 28 апреля 2019

Я пытаюсь использовать библиотеку C ++ Freetype в Android Studio.Я могу правильно использовать его в обычном проекте C ++, который я компилирую с g ++ с помощью команды

g++ my_code.cpp -I/usr/local/include/freetype2 -L/usr/local/lib -lfreetype

Так что, очевидно, библиотека была правильно скомпилирована.Тем не менее, у меня есть проблемы с изменением android.mk для ссылки на эту библиотеку.Я могу правильно включить заголовочные файлы (т. Е. Флаг -I / usr / local / include / freetype2 работает), но при попытке запустить функцию сборка Android Studio завершается неудачно с сообщением об ошибке, например /home/jonathan/OvrSdk/ovr_sdk_mobile_1.18.0/MyProjects/Triz/Projects/Android/jni/../../../Src/TriangleGameMenu.cpp:84: undefined reference to 'FT_Init_FreeType'.Полное сообщение об ошибке:

Build command failed.
Error while executing process /home/jonathan/Android/Sdk4/ndk-bundle/ndk-build with arguments {NDK_PROJECT_PATH=null APP_BUILD_SCRIPT=/home/jonathan/OvrSdk/ovr_sdk_mobile_1.18.0/MyProjects/Triz/Projects/Android/jni/Android.mk NDK_APPLICATION_MK=/home/jonathan/OvrSdk/ovr_sdk_mobile_1.18.0/MyProjects/Triz/Projects/Android/jni/Application.mk APP_ABI=arm64-v8a NDK_ALL_ABIS=arm64-v8a NDK_DEBUG=1 APP_PLATFORM=android-21 NDK_OUT=/home/jonathan/OvrSdk/ovr_sdk_mobile_1.18.0/MyProjects/Triz/Projects/Android/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT=/home/jonathan/OvrSdk/ovr_sdk_mobile_1.18.0/MyProjects/Triz/Projects/Android/build/intermediates/ndkBuild/debug/lib V=0 -j4 -C/home/jonathan/OvrSdk/ovr_sdk_mobile_1.18.0/MyProjects/Triz/Projects/Android APP_PLATFORM=android-21 NDK_TOOLCHAIN_VERSION=clang APP_STL=c++_static NDK_DEBUG=1 OVR_DEBUG=1 /home/jonathan/OvrSdk/ovr_sdk_mobile_1.18.0/MyProjects/Triz/Projects/Android/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/libtriz.so}
make: Entering directory `/home/jonathan/OvrSdk/ovr_sdk_mobile_1.18.0/MyProjects/Triz/Projects/Android'
[arm64-v8a] SharedLibrary  : libtriz.so
/home/jonathan/OvrSdk/ovr_sdk_mobile_1.18.0/MyProjects/Triz/Projects/Android/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/triz/__/__/__/Src/TriangleGameMenu.o: In function `TriangleGameMenu':
/home/jonathan/OvrSdk/ovr_sdk_mobile_1.18.0/MyProjects/Triz/Projects/Android/jni/../../../Src/TriangleGameMenu.cpp:84: undefined reference to `FT_Init_FreeType'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [/home/jonathan/OvrSdk/ovr_sdk_mobile_1.18.0/MyProjects/Triz/Projects/Android/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/libtriz.so] Error 1
make: Leaving directory `/home/jonathan/OvrSdk/ovr_sdk_mobile_1.18.0/MyProjects/Triz/Projects/Android'

Мой файл android.mk выглядит следующим образом:

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)




LOCAL_MODULE            := triz
LOCAL_CPPFLAGS          := -Wno-narrowing -I/usr/local/include/freetype2 -L/usr/local/lib -lfreetype

LOCAL_SRC_FILES         := (bunch of source files)

LOCAL_LDLIBS            := -llog -landroid -lGLESv3 -lEGL       # include default libraries

LOCAL_LDFLAGS           := -u ANativeActivity_onCreate

LOCAL_STATIC_LIBRARIES  := android_native_app_glue
LOCAL_SHARED_LIBRARIES  := vrapi

include $(BUILD_SHARED_LIBRARY)

$(call import-module,android/native_app_glue)
$(call import-module,VrApi/Projects/AndroidPrebuilt/jni)

Моя проблема на самом деле в том, что я не знаю, куда мне поместить различные флаги в AndroidФайл .mk (или в других файлах).Итак, прямо сейчас я поместил все флаги, которые я бы передал g ++ в LOCAL_CPPFLAGS, но это, очевидно, не работает.перемещение -lfreetype в LOCAL_LDLIBS также не работает.

...