android 动态库与静态库连接,Android cmakefile里面配置链接动态库和静态库时报错:missing and no known rule to make it...

一篇关于Android项目遇到CMake报错,焦点在于缺少libbylog.so动态库的解决方法,提供了build.gradle配置建议。作者分享了CMake文件及gradle配置,旨在帮助开发者理解问题并修复编译错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

报错如下:

* What went wrong:

Execution failed for task ':app:externalNativeBuildDebug'.

> Build command failed.

Error while executing process D:\SDK\cmake\3.10.2.4988404\bin\cmake.exe with arguments {--build F:\AndroidProjectTest\Friend-test\app\.externalNativeBuild\cmake\debug\x86_64 --target meeting}

ninja: error: 'F:/AndroidProjectTest/Friend-test/app/src/main/cpp/libs/x86_64/libbylog.so', needed by 'F:/AndroidProjectTest/Friend-test/app/build/intermediates/cmake/debug/obj/x86_64/libmeeting.so', missing and no known rule to make it

CMake如下:

# For more information about using CMake with Android Studio, read the

# documentation: https://d.android.com/studio/projects/add-native-code.html

# Sets the minimum version of CMake required to build the native library.

cmake_minimum_required(VERSION 3.4.1)

set(SOURCE_DIR ${CMAKE_SOURCE_DIR})

#message("the project root dir: ${PROJECT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}")

# 动态库引入

#log

add_library(bylog SHARED IMPORTED)

set_target_properties(bylog

PROPERTIES

IMPORTED_LOCATION

${SOURCE_DIR}/libs/${ANDROID_ABI}/libbylog.so)

set(TARGET_LINK_MODULES ${TARGET_LINK_MODULES} bylog log)

#DHT

add_library(dht STATIC IMPORTED)

set_target_properties(dht

PROPERTIES

IMPORTED_LOCATION

${SOURCE_DIR}/libs/${ANDROID_ABI}/libdht.a)

set(TARGET_LINK_MODULES ${TARGET_LINK_MODULES} dht)

set(TARGET_INC_PATH ${TARGET_INC_PATH} ${SOURCE_DIR}/dht)

#QUIC

add_library(quic STATIC IMPORTED)

set_target_properties(quic

PROPERTIES

IMPORTED_LOCATION

${SOURCE_DIR}/libs/${ANDROID_ABI}/libquic.a)

set(TARGET_LINK_MODULES ${TARGET_LINK_MODULES} quic)

#源码

set(MEETING_TARGET_NAME meeting)

set(TARGET_SRC_FILES ${SOURCE_DIR}/ApplicationContext.cpp

${SOURCE_DIR}/common/utils.cpp)

#添加目标库 meeting

add_library(${MEETING_TARGET_NAME} SHARED ${TARGET_SRC_FILES})

target_include_directories(${MEETING_TARGET_NAME} PRIVATE ${SOURCE_DIR})

target_include_directories(${MEETING_TARGET_NAME} PRIVATE ${SOURCE_DIR}/common)

target_include_directories(${MEETING_TARGET_NAME} PRIVATE ${TARGET_INC_PATH})

target_link_libraries(${MEETING_TARGET_NAME} ${TARGET_LINK_MODULES})

报错的原因是,build.gradle里面没有添加红色部分,如下:

284365458e6b19e6714e06942002494c.png

本文地址:https://blog.csdn.net/weixin_42713739/article/details/107161629

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值