繁体   English   中英

使用NDK无法建立专案

[英]Failure to build a project using NDK

我是第一次尝试NDK,但是我一直坚持建立这个项目。 我正在尝试使用Android屏幕截图录制程序中使用的库从屏幕上读取数据。 我了解我需要使用从手机中拔出的LibGUI。 但是,无论何时编译,我都会收到以下错误消息:

C:/Users/Kevin/Desktop/ScreenCapture//jni/main.cpp:2:34: fatal error: gui/ISurfaceComposer.h: No such file or directory

考虑到我包含libgui.so,这很奇怪。

我的主文件如下所示:

#include <stdio.h>
#include <gui/ISurfaceComposer.h>

int main() {
    printf("Started!");
    return 0;
}

我的Android.mk如下所示:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := libgui-prebuilt
LOCAL_SRC_FILES := libgui.so

include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)

LOCAL_MODULE    := screencapture
LOCAL_SRC_FILES := main.cpp
LOCAL_SHARED_LIBRARIES := libgui-prebuilt

include $(BUILD_EXECUTABLE)

我的主文件和libgui.so都在同一个文件夹中。

main.cpp:2:34:致命错误:gui / ISurfaceComposer.h:没有此类文件或目录

您的错误消息表明编译器无法找到文件,但是您尝试的解决方案是从电话提供共享 (.so)。

库可能在链接时有所帮助,但是在链接之前,您必须成功编译,并且这样做,您将必须获取缺少的标头(可能是从AOSP来源获得的,因为在电话中找不到源代码)或否则通过从您收集的线索中推断出其内容来重新创建它。 不幸的是,通常不可能仅从AOSP中取出一个内部标头,因为它可能取决于许多其他标头。

如果内部组件之间的私有接口在Android版本之间更改,则与私有系统内部的链接也可能会导致程序中断的风险。

(通常,我还要提到的是,您不太可能使用NDK录制屏幕,因为通常情况下是使用共享库链接到应用程序进程,但是您的Android.mk似乎表明您正在构建可执行文件-如果您可以成功构建它并以具有足够权限的用户身份运行它(例如adb的shell userid或使用root hack),则可能会起作用

为模块屏幕捕获添加一行:

LOCAL_C_INCLUDES := $(LOCAL_PATH)/

如果没有gui文件夹,则需要将包含标题* .h的标题复制并粘贴到jni / gui文件夹中。 对于ndk总是这样的要求...


或第二种情况-为ldlibs使用此源的其他位置:

LOCAL_LDLIBS := -L/full_path_to_source_gui/gui/

暂无
暂无

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

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