前提・実現したいこと
Xamarin.FormsでOpenCV for iOSを利用したiOSアプリを作成したいと思っています。
まずOpenCVのサイトからiOS用のopencv2.frameworkを取得し、Xcodeを利用してOpenCV for iOSをラッピングするStatic LibraryとしてlibOpenCViOS.aを作成しました。
このスタティックライブラリにはOpenCVを利用して画像をグレイスケールにする関数toGrayImgを作成しました。
@interface OpenCViOS : NSObject + (UIImage *)toGrayImg:(UIImage *)src; @end
次にXamarin.Formsのテンプレートを利用してプロジェクトHelloXamarinを作成し、そこにlibOpenCViOS.aをバインドするバインディングプロジェクトBindingOpenCViOSを追加しました。
Objective Sharpieを利用してinterfaceを作成しました。
[BaseType(typeof(NSObject))] interface OpenCViOS { [Static] [Export("toGrayImg:")] UIImage ToGrayImg(UIImage src); }
次にHelloXamarinプロジェクトのiOS依存プロジェクトHelloXamarin.iOSの参照にプロジェクトBindingOpenCViOSを追加し、toGrayImgを呼び出す処理を追加しました。
するとHelloXamarin.iOSのビルドでエラーが発生しビルド出来なくなってしまいました。
発生している問題・エラーメッセージ
error MT5209 : Native linking error : warning: ignoring file /Users/_develop/Documents/repos/HelloXamarin/HelloXamarin/HelloXamarin.iOS/obj/iPhoneSimulator/Release/mtouch-cache/libOpenCViOS.a, building for iOS Simulator-x86_64 but attempting to link with file built for iOS-arm64 MTOUCH : error MT5211: Native linking failed, undefined Objective-C class: OpenCViOS. The symbol '_OBJC_CLASS_$_OpenCViOS' could not be found in any of the libraries or frameworks linked with your application. MTOUCH : warning MT5215: References to 'System' might require additional -framework=XXX or -lXXX instructions to the native linker MTOUCH : warning MT5215: References to 'System' might require additional -framework=XXX or -lXXX instructions to the native linker MTOUCH : warning MT5215: References to 'System.Net.Security' might require additional -framework=XXX or -lXXX instructions to the native linker MTOUCH : warning MT5215: References to 'System' might require additional -framework=XXX or -lXXX instructions to the native linker MTOUCH : warning MT5215: References to 'System' might require additional -framework=XXX or -lXXX instructions to the native linker MTOUCH : error MT5202: Native linking failed. Please review the build log. ld : warning : ignoring file /Users/_develop/Documents/repos/HelloXamarin/HelloXamarin/HelloXamarin.iOS/obj/iPhoneSimulator/Release/mtouch-cache/libOpenCViOS.a, building for iOS Simulator-x86_64 but attempting to link with file built for iOS-arm64 Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_OpenCViOS", referenced from: -u command line option ld: symbol(s) not found for architecture x86_64 clang : error : linker command failed with exit code 1 (use -v to see invocation) プロジェクト "HelloXamarin.iOS.csproj" 内のターゲット "_CompileToNative" のビルドが終了しました -- 失敗。 プロジェクト "HelloXamarin.iOS.csproj" のビルドが終了しました -- 失敗。 ビルドに失敗しました。 MTOUCH : warning MT5215: References to 'System' might require additional -framework=XXX or -lXXX instructions to the native linker MTOUCH : warning MT5215: References to 'System' might require additional -framework=XXX or -lXXX instructions to the native linker MTOUCH : warning MT5215: References to 'System.Net.Security' might require additional -framework=XXX or -lXXX instructions to the native linker MTOUCH : warning MT5215: References to 'System' might require additional -framework=XXX or -lXXX instructions to the native linker MTOUCH : warning MT5215: References to 'System' might require additional -framework=XXX or -lXXX instructions to the native linker ld : warning : ignoring file /Users/_develop/Documents/repos/HelloXamarin/HelloXamarin/HelloXamarin.iOS/obj/iPhoneSimulator/Release/mtouch-cache/libOpenCViOS.a, building for iOS Simulator-x86_64 but attempting to link with file built for iOS-arm64 error MT5209 : Native linking error : warning: ignoring file /Users/_develop/Documents/repos/HelloXamarin/HelloXamarin/HelloXamarin.iOS/obj/iPhoneSimulator/Release/mtouch-cache/libOpenCViOS.a, building for iOS Simulator-x86_64 but attempting to link with file built for iOS-arm64 MTOUCH : error MT5211: Native linking failed, undefined Objective-C class: OpenCViOS. The symbol '_OBJC_CLASS_$_OpenCViOS' could not be found in any of the libraries or frameworks linked with your application. MTOUCH : error MT5202: Native linking failed. Please review the build log. clang : error : linker command failed with exit code 1 (use -v to see invocation) 6 個の警告 4 エラー
試したこと
プラットフォームのアーキテクチャの食い違いでエラーが出ているようなのでReleseでビルドしていたのをRelease|ARMに変えてみたところコンパイルは通るようになりましたが、シミュレータでの動作確認ができません。
(iPhoneのシミュレータがx86_64のアーキテクチャしかないようなのですがそういうものなのでしょうか?iPhoneはARMではないのですか?)
iPhoneのシミュレータでこのアプリケーションを動作確認するにはどうしたらよいでしょうか?
補足情報(FW/ツールのバージョンなど)
iPhone実機なし
macOS Catalina v10.15.7
Visual Studio for mac v8.7.8(build 4)
Xcode v12.0.1(12A7300)
OpenCV v4.5.0
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/01 04:58