admin管理员组文章数量:1663034
Dart FFI使用指南篇 - 知乎
在参考上面博客,调试Dart FFI功能时,在编译出动态库libsample.dylib,加载库时报错
mach-o, but wrong architecture
Invalid argument(s): Failed to load dynamic library '/Users/flutterProject/ffiDemo/library/build/libsample.dylib': dlopen(/Users/flutterProject/ffiDemo/library/build/libsample.dylib, 1): no suitable image found. Did find:
/Users/flutterProject/ffiDemo/library/build/libsample.dylib: mach-o, but wrong architecture
/Users/flutterProject/ffiDemo/library/build/libsample.dylib: mach-o, but wrong architecture
#0 _open (dart:ffi-patch/ffi_dynamic_library_patch.dart:12:43)
#1 new DynamicLibrary.open (dart:ffi-patch/ffi_dynamic_library_patch.dart:23:12)
#2 main (file:///Users/flutterProject/ffiDemo/bin/ffi_sample.dart:20:32)
#3 _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:297:19)
#4 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:192:12)
问题原因:
查看libsample.dylib 库文件类型
匹配Mac Mini Arm64架构
查看本地Dart类型
看到Dart类型为macos_x64类型,和Arm64不匹配,所以加载libsample.dylib类型不匹配,报错
解决方案:
在使用cmake命令进行打包时,指定库类型
cmake -DCMAKE_BUILD_TYPE=debug -DBUILD_STATIC_LIBS=ON -DBUILD_SHARED_LIBS=OFF "-DCMAKE_OSX_ARCHITECTURES=arm64;x86_64" -DARCHIVE_INSTALL_DIR=. -G "Unix Makefiles" ..
重新打包后,使用file 命令,查看文件类型
可以看到,这时库已经同时指出x86和arm64 两种架构。
本文标签: MacmachArchitecturewrong
版权声明:本文标题:Mac M1解决mach-o, but wrong architecture 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1729978073a1218264.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论