我想用颤振运行 OpenCV。首先,我尝试将 FFI 库绑定到本机代码。
Flutter Dev 说“在 iOS 上,你需要告诉 Xcode 静态链接文件:
在 Xcode 中,打开 Runner.xcworkspace。 将 C/C++/Objective-C/Swift 源文件添加到 Xcode 项目中"
但我没有'Runner.xcworkspace'的文件名
在 Flutter 中运行 opencv 或 c++ 代码非常困难。我正在研究它 3 天,但没有任何改进。
答案 0 :(得分:0)
如果您遵循 flutter.dev Binding to native code using dart:ffi 上的指南,那是因为您创建了插件模板,因此 iOS 文件夹仅包含特定于插件的文件。 要找到您要查找的 iOS 文件夹,请打开创建项目时也创建的“example”文件夹,然后打开其中的 iOS 文件夹。
答案 1 :(得分:0)
对于使用 flutter 和使用 ffi 的本机代码运行 OpenCV,您可以使用以下方式:
iOS:在 Podfile 中将下一行添加到目标
pod 'OpenCV', '~> 4.3'
在 Build Settings -> Library Search Paths 添加递归路径
"$(SRCROOT)/Pods/OpenCV"
为了调试运行,您可以将 opencv.framework 添加到您的项目目录
Android:对于 Android,您有两种方法
android/app/build.gradle
添加下一部分 android {
...
defaultConfig {
...
externalNativeBuild {
cmake {
// Enabling exceptions, RTTI
// And setting C++ standard version
cppFlags '-frtti -fexceptions -std=c++11'
// Shared runtime for shared libraries
arguments "-DANDROID_STL=c++_shared"
}
}
...
}
...
//external c++ plugin
externalNativeBuild{
cmake{
path "<pathtoyour>/CMakeLists.txt"
}
}
...
}
文件CMakeList.txt
cmake_minimum_required(VERSION 3.4.1)
set( OpenCV_DIR "<path>/OpenCV-android-sdk/sdk/native/jni" )
find_package( OpenCV REQUIRED )
message(STATUS "OpenCV libraries: ${OpenCV_LIBS}")
add_library( <youe binary> SHARED <path to your c++ or c file> )
target_link_libraries( <youe binary> ${OpenCV_LIBS} )