簡體   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