Я пытаюсь использовать библиотеку 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 также не работает.