c++ - 安卓 NDK + Eclipse : No such file or directory

标签 c++ eclipse android-ndk freetype2

我正在尝试将 Freetype 与 Android NDK + Eclipse 结合使用,但是当我将其包含在我的项目中时出现错误:

#include <ft2build.h>
#include FT_FREETYPE_H

错误信息:

fatal error: ft2build.h: No such file or directory

这是 jni/freetype2 中的 Android.mk:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := freetype
LOCAL_SRC_FILES := freetype/lib/libfreetype.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/freetype/include/freetype2 $(LOCAL_PATH)/include
include $(PREBUILT_STATIC_LIBRARY)

这是项目的 Android.mk(在 jni 文件夹中):

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE    := CNSD_CPP
...
LOCAL_LDLIBS := -landroid -lGLESv2 -lEGL -llog
LOCAL_STATIC_LIBRARIES := freetype android_native_app_glue
include $(BUILD_SHARED_LIBRARY)
$(call import-module,android/native_app_glue)

我在目录中有那个头文件:

jni/freetype2/freetype/include/freetype2

当我按 CTRL+单击它时,Eclipse 会向我显示该文件。我做错了什么?


@Alex:我运行了 ndk-build V=1,最后的结果是这样的:

[armeabi] Compile++ thumb: CNSD_CPP <= Log.cpp d:/Development/Android/android-ndk-r9c/toolchains/arm-linux-androideabi-4.8/prebuilt/windows-x86_64/bin/arm-linux-androideabi-g++ -MMD -MP -MF D:/Development/Projects/workspace/CNSD_CPP//obj/local/armeabi/objs/CNSD_CPP/Log .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 -Id:/Development/Android/android-ndk-r9c/sources/android/native_app_glue -Id:/Development/Android/android-ndk-r9c/sources/cxx-stl/gnu-libstdc++/4.8/include -Id:/Development/Android/android-ndk-r9c/sources /cxx-stl/gnu-libstdc++/4.8/libs/armeabi/include -Id:/Development/Android/android-ndk-r9c/sources/cxx-stl/gnu-libstdc++/4.8/include/backward -ID:/Development/Projects/workspace/CNSD_CPP//jni -DANDROID -Wa,--noexecstack -Wf ormat -Werror=format-security -std=c++11 -Id:/Development/Android/android-ndk-r9c/platforms/android-15/arch-arm/usr/include -c D:/Development/Projects/workspace/CNSD_CPP//jni/Log.cpp -o D:/Development/Projects/workspa ce/CNSD_CPP//obj/local/armeabi/objs/CNSD_CPP/Log.o [armeabi] Compile++ thumb: CNSD_CPP <= Main.cpp d:/Development/Android/android-ndk-r9c/toolchains/arm-linux-androideabi-4.8/prebuilt/windows-x86_64/bin/arm-linux-androideabi-g++ -MMD -MP -MF D:/Development/Projects/workspace/CNSD_CPP//obj/local/armeabi/objs/CNSD_CPP/Mai n.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 -Id:/Development/Android/android-ndk-r9c/sources/android/native_app_glue -Id:/Development/Android/android-ndk-r9c/sources/cxx-stl/gnu-libstdc++/4.8/include -Id:/Development/Android/android-ndk-r9c/source s/cxx-stl/gnu-libstdc++/4.8/libs/armeabi/include -Id:/Development/Android/android-ndk-r9c/sources/cxx-stl/gnu-libstdc++/4.8/include/backward -ID:/Development/Projects/workspace/CNSD_CPP//jni -DANDROID -Wa,--noexecstack -W format -Werror=format-security -std=c++11 -Id:/Development/Android/android-ndk-r9c/platforms/android-15/arch-arm/usr/include -c D:/Development/Projects/workspace/CNSD_CPP//jni/Main.cpp -o D:/Development/Projects/works pace/CNSD_CPP//obj/local/armeabi/objs/CNSD_CPP/Main.o D:/Development/Projects/workspace/CNSD_CPP//jni/Main.cpp:3:22: fatal error: ft2build.h: No such file or directory #include ^ compilation terminated. make.exe: *** [D:/Development/Projects/workspace/CNSD_CPP//obj/local/armeabi/objs/CNSD_CPP/Main.o] Error 1

最佳答案

不要使用 cygwin shell 与 NDK 工具链一起构建。打开普通的 Windows 命令行,并使用 ndk-build.cmd 代替。确保所有路径都以所谓的混合格式指定,例如

d:/Development/Projects/workspace/CNSD_CPP

更新:现在我明白了

include $(LOCAL_PATH)/freespace2/Android.mk

不见了。它应该放在 BUILD_SHARED_LIBRARY 之后和 include-module 之前。

关于c++ - 安卓 NDK + Eclipse : No such file or directory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24840966/

相关文章:

android - 完成 Android 设置?

c++ - 如何将重载的成员函数作为参数传递?

c++ - 无法使用 loadxml 加载 '@' 符号

c++ - Eclipse 内容辅助无法识别 std::thread,但可以正确编译

android - 如何使用手机 Allview P5 调试我的 Android 应用程序

java - 如何将int与枚举匹配

android - 我可以使用 NDK 在 Android 上构建命令行应用程序吗?

c++ - 为什么 select() 总是超时? ( window )

c++ - 数组和结构中的指针

c - 使用 GDB 在 Eclipse 中调试 C 程序时的奇怪行为