2

私はMonotouchのRedLaserバインディングを使用して、バーコードをスキャンするアプリを作成しています。iSimulatorの魅力のようにうまく機能しますが、実際のデバイスにデプロイしようとすると(実行環境の切り替えDebug | Simulator-> Debug | iPhone)、ビルドすらできません。

私はMonoTouch6.0.8、MonoDevelop 3.0.6、XCode4.5.2を使用しています。

また、展開にはiphone3GSデバイスを使用しています。デバイスはiOS6.0を実行しており、それが私のアプリケーションのターゲットです。ここで同じエラーコードを持つMonoTouchbugzillaのバグを見つけました。これは、ターゲットを6.0->5.1から変更することを提案しました。私はそれをしました、そして、物事を変えませんでした。

プロビジョニングプロファイルがセットアップされ、検証され、Xcode Organizerにインストールされており、証明書についても同じです。どちらも大丈夫です。

ビルド出力は以下のとおりです。ご協力いただければ幸いです。ありがとう

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/g++ -miphoneos-version-min = 5.1 -gdwarf-2 -arch armv7 -std = c99 -I / Developer / MonoTouch / SDKs / MonoTouch.iphoneos.sdk / usr / include -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk -c /var/folders/_l/0pvrtd6x6qg83sz4_0906b5c0000gn/ T / tmpee06e1f.tmp / main.armv7.m -o /Users/hasnainaltaiar/Dev/Leopard/SVN/trunk/LD6419/Platforms/iOS/Leopard.Delivery.iOS/Leopard.Delivery.iOS/obj/Release/mtouch- cache / main..armv7.cache.M0wr77LlBANF6vKjGqQvyVnmWEk = .o /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/g++ -miphoneos-version-min = 5.1 -gdwarf-2- arch armv7 -std = c99 -I / Developer / MonoTouch / SDKs / MonoTouch.iphoneos.sdk / usr / include -isysroot / Applications/Xcode。app / Contents / Developer / Platforms / iPhoneOS.platform / Developer / SDKs / iPhoneOS6.0.sdk -c /var/folders/_l/0pvrtd6x6qg83sz4_0906b5c0000gn/T/tmpee06e1f.tmp/registrar.m -o / Users / hasnainaltaiar / Dev / Leopard / SVN / trunk / LD6419 / Platforms / iOS / Leopard.Delivery.iOS / Leopard.Delivery.iOS / obj / Release / mtouch-cache / registerrar.armv7.cache.Zar9bxp0AZNxwVcgrsOMEFHv0k4 = .o /Applications/Xcode.app/ /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/g++ -Wl、-no_pie -miphoneos-version-min = 5.1 -gdwarf-2 -arch armv7 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms /iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk /var/folders/_l/0pvrtd6x6qg83sz4_0906b5c0000gn/T/tmpee06e1f.tmp/Mono.Security.dll.armv7.o /var/folders/_l/0pvrtd6x6qg83sz4_0 .tmp/Leopard.Domain.dll.armv7。o /var/folders/_l/0pvrtd6x6qg83sz4_0906b5c0000gn/T/tmpee06e1f.tmp/RedLaser.dll.armv7.o /var/folders/_l/0pvrtd6x6qg83sz4_0906b5c0000gn/T/tmpee06e1f.tmp/System folder / _l / 0pvrtd6x6qg83sz4_0906b5c0000gn / T / tmpee06e1f.tmp / mscorlib.dll.armv7.o /var/folders/_l/0pvrtd6x6qg83sz4_0906b5c0000gn/T/tmpee06e1f.tmp/System.dll.arm T / tmpee06e1f.tmp / monotouch.dll.armv7.o /var/folders/_l/0pvrtd6x6qg83sz4_0906b5c0000gn/T/tmpee06e1f.tmp/LeopardDeliveryiOS.exe.armv7.o / Users / hasnainaltaiar / Dev / Leopard / SV Platforms / iOS / Leopard.Delivery.iOS / Leopard.Delivery.iOS / obj / Release / mtouch-cache / main..armv7.cache.M0wr77LlBANF6vKjGqQvyVnmWEk = .o / Users / hasnainaltaiar / Dev / Leopard / SVN / trunk / LD6419 /プラットフォーム/iOS/Leopard.Delivery.iOS/Leopard.Delivery。iOS / obj / Release / mtouch-cache / registerrar.armv7.cache.Zar9bxp0AZNxwVcgrsOMEFHv0k4 = .o -o / var / folder / _l / 0pvrtd6x6qg83sz4_0906b5c0000gn / T / tmpee06e1f.tmp / Leopard -framework QuartzCore -framework CoreGraphics -framework AVFoundation -framework CoreMedia -framework CoreVideo -framework OpenGLES -framework Security -framework SystemConfiguration -lz -liconv -u _mono_pmip -u _monotouch_create_managed_ref -u _monotouch_release_managed_ref -u _monotouch_IntPtr_objc_msg u _Flush -u _ReadZStream -u _WriteZStream -lmono-2.0 -lmonotouch -L / Developer / MonoTouch / SDKs/MonoTouch.iphoneos。sdk / usr / lib -lgcc_eh -force_load / var / folder / _l / 0pvrtd6x6qg83sz4_0906b5c0000gn / T / tmpee06e1f.tmp / libRedLaserSDK.aプロセスはコード1、コマンド:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOSで終了しました。 platform / Developer / usr / bin / g ++ -Wl、-no_pie -miphoneos-version-min = 5.1 -gdwarf-2 -arch armv7 -isysroot/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/ SDKs / iPhoneOS6.0.sdk /var/folders/_l/0pvrtd6x6qg83sz4_0906b5c0000gn/T/tmpee06e1f.tmp/Mono.Security.dll.armv7.o /var/folders/_l/0pvrtd6x6qg83sz4_0906b5c0000gn/T/tmp dll.armv7.o /var/folders/_l/0pvrtd6x6qg83sz4_0906b5c0000gn/T/tmpee06e1f.tmp/RedLaser.dll.armv7.o /var/folders/_l/0pvrtd6x6qg83sz4_0906b5c0000g/T/tmpeeo /var/folders/_l/0pvrtd6x6qg83sz4_0906b5c0000gn/T/tmpee06e1f.tmp/mscorlib.dll.armv7.o /var/folders/_l/0pvrtd6x6qg83sz4_0906b5c0000gn/T/tmpee06e1f.tmp/System _l / 0pvrtd6x6qg83sz4_0906b5c0000gn / T / tmpee06e1f.tmp / monotouch.dll.armv7.o /var/folders/_l/0pvrtd6x6qg83sz4_0906b5c0000gn/T/tmpee06e1f.tmp/LeopardDeliveryiOS. trunk / LD6419 / Platforms / iOS / Leopard.Delivery.iOS / Leopard.Delivery.iOS / obj / Release / mtouch-cache / main..armv7.cache.M0wr77LlBANF6vKjGqQvyVnmWEk = .o / Users / hasnainaltaiar / Dev / Leopard / SVN / trunk / LD6419 / Platforms / iOS / Leopard.Delivery.iOS / Leopard.Delivery.iOS / obj / Release / mtouch-cache / registerrar.armv7.cache.Zar9bxp0AZNxwVcgrsOMEFHv0k4 = .o -o / var / folder / _l / 0pvrtd /tmpee06e1f。tmp / LeopardDeliveryiOS -framework CFNetwork -framework Foundation -framework UIKit -framework AudioToolbox -framework QuartzCore -framework CoreGraphics -framework AVFoundation -framework CoreMedia -framework CoreVideo -framework OpenGLES -framework Security -framework SystemConfiguration -lz -liconv -u _mono_pmip -u _monotouch_create u _monotouch_release_managed_ref -u _monotouch_IntPtr_objc_msgSend_IntPtr -u _monotouch_IntPtr_objc_msgSendSuper_IntPtr -u _CloseZStream -u _CreateZStream -u _Flush -u _ReadZStream -u _WriteZStream -lmono-2.0 -lmono force_load /var/folders/_l/0pvrtd6x6qg83sz4_0906b5c0000gn/T/tmpee06e1f.tmp/libRedLaserSDK.aアーキテクチャarmv7の未定義のシンボル:
"_OBJC_CLASS _ $ _ CLLocationManager"、参照元:libRedLaserSDK.a(StatusManager.o)のobjc-class-ref ld:アーキテクチャarmv7のシンボルが見つかりませんcollect2:ldが1つの終了ステータスを返しました

エラーMT5202:ネイティブリンクに失敗しました。ビルドログを確認してください。

- - - - - - - - - - - 終わり - - - - - - - - - - -

プロジェクトにバンドル識別子が指定されていません。プロビジョニングプロファイルに一致するように「leoparddeliveryios」を生成しました。

4

2 に答える 2

4

エラーメッセージから:

Undefined symbols for architecture armv7: "_OBJC_CLASS_$_CLLocationManager"

ライブラリが更新され、に依存しているようCoreLocationです。

バインディングプロジェクト内の属性を編集してそのプロパティに[LinkWith]追加CoreLocationしてからFrameworks、バインディングを再構築します(次にアプリケーションを再構築します)。これで問題が解決した場合は、バグレポートを提出して、githubリポジトリで修正できるようにしてください。

注:簡単なテストとして、プロジェクトのデバッグ構成リリース構成の両方に次のオプションを追加することもできます(MonoDevelop内のプロジェクトのオプションのmtouch追加引数)。

-gcc_args="-framework CoreLocation"

その結果、同じ結果になります。ただし、使用しているすべてのプロジェクト(および構成)に対してその修正をコピーする必要があります(したがって、問題を特定することは有用ですが、それを修正するための実際には良い方法ではありません)。

于 2013-01-15T13:00:45.527 に答える
2

問題を解決しましたが、ここで解決策を文書化して、学んだ教訓を共有します。

まず、バインド時CoreLocationに属性から欠落していたため、ソリューションを構築できませんでした。Frameworksそれを指摘してくれたpoupouのおかげで、GitHub(MonoTouch Binding Repo)でも修正しました。

2番目:MonoDevelopは、プロビジョニングプロファイルが見つからなかったため、アプリをビルドできませんでした。プロビジョニングプロファイルと証明書を手動で設定する必要があります。これを行うには、Main Project > Options > Build > iPhone Bundle Signing>に移動します。次に、Configuration (Debug|Release)Platform (iPhone|Simulator)を選択し、IDとProvの証明書とプロビジョニングプロファイルを選択します。プロフィール。

3番目:最後に、iPhoneにデプロイするたびにアプリがクラッシュしていました。上記のコメントに記載されているように、バグを報告しました。次に、RedLaserフレームワークにQRCodeのスキャンにバグがあるように見えました。以下の行を追加してこの機能を無効にすると、問題が修正されました。

overlayController.ParentPicker.ScanQRCODE = false;
于 2013-01-17T01:53:29.223 に答える