我想用flutter运行OpenCV。首先,我尝试将FFI库绑定到本机代码。
Flutter Dev说";在iOS上,你需要告诉Xcode静态链接文件:
在Xcode中,打开Runner.xcworkspace。将C/C++/Objective-C/Swift源文件添加到Xcode项目";
但我没有一个名为"Runner.xcworkspace"的文件;
我的XCode文件夹
我的AndroidStudio文件夹
在Flutter中运行opencv或c++代码非常困难。我已经做了三天了,没有任何改进。
如果您遵循了关于使用dart:ffin绑定到本机代码的flatter.dev指南,那是因为您创建了一个插件模板,因此iOS文件夹只包含插件特定的文件。要查找您要查找的iOS文件夹,请打开;示例";文件夹,也是在您制作项目并打开其中的iOS文件夹时创建的。
对于使用flutter和使用ffi的本地代码运行OpenCV,您可以这样做:
iOS:在Podfile中添加下一行到目标
pod 'OpenCV', '~> 4.3'
在生成设置中->库搜索路径添加递归路径
"$(SRCROOT)/Pods/OpenCV"
对于调试运行,您可以将opencv.framework添加到您的项目目录中
Android:对于Android,您有两种方法
- native:像谷歌上的大多数教程一样,下载Android SDK(.java扩展(
- c编译:文件夹
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} )