cmake在Flutter Project中找不到我的Android NDK库文件 我正在尝试使用FFI将C ++库集成。我有一个预先编译的文件,想创建一个链接的包装库。

问题描述 投票:0回答:0
我有

libMesh.so

libMesh.so

android/src/main/libs/arm64-v8a/中 我的包装器代码在
android/src/main/libs/x86_64/

  • my
    src/line.cpp
    CMakeLists.txt
    
    Cmakelists.txt
  • android/app/
  • native_banding.dart
    
    
    cmake_minimum_required(VERSION 3.4.1)  
    
    
    include_directories(C:/Development/applications/Lib)
    
    linking
    add_library( 
        LineWrapper
        target_link_libraries
        SHARED
        ../../src/line.cpp
    )
    
    target_link_libraries(
        LineWrapper
        ${CMAKE_CURRENT_SOURCE_DIR}/../src/main/libs/${ANDROID_ABI}/libMesh.so
    )
    

final DynamicLibrary meshLibrary = Platform.isAndroid ? DynamicLibrary.open("libMesh.so") : DynamicLibrary.process(); final DynamicLibrary lineWrapperLibrary = Platform.isAndroid ? DynamicLibrary.open("libLineWrapper.so") : DynamicLibrary.process();

build.gradle

eRror 当我运行Flutter Build时,我会收到此错误:

android {
    // ...
    defaultConfig {

    externalNativeBuild {
        cmake {
            path "CMakeLists.txt"
        }
    }
        
        ndk {
            abiFilters 'x86_64', 'arm64-v8a'
        }
    }
    // ...
}
我已经确认库文件存在于该路径上。我尝试过:

使用find_library()而不是直接路径
将ABIS限制在build。

我想念什么?我如何将新库与现有的.SO文件正确链接?

Hello我通过删除Libs文件夹并添加我的$ {android_abi}/sharedfile.so来解决此错误。 Cmakelists.txt

  Could not find libMesh.so for arm64-v8a at:
  C:/Development/applications/flutter_project/android/app/../src/main/libs/arm64-v8a/libMesh.so

android c++ flutter cmake android-ndk
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.