2

画像からバーコードをスキャンするために使用されるScanditというライブラリをバインドしようとしています。

これまでのところ、私は成功していません。ライブラリによると、armv6 arm7 および i386 をサポートしています。しかし、私はそれを構築することができません。

lipo -info libscanditsdk-iphone-2.1.17.a
ファット ファイルのアーキテクチャ: libscanditsdk-iphone-2.1.17.a: armv6 armv7 i386

ここに私のビルド出力があります

https://gist.github.com/4ee195063b61ae292ea3

私のLinkWithファイルは次のようになります

using System;
using MonoTouch.ObjCRuntime;

[assembly: LinkWith ("libmeScanditWrapper.a", LinkTarget.ArmV7 | LinkTarget.ArmV6
                     ,ForceLoad = true, IsCxx=true
                     ,Frameworks="CoreVideo CoreGraphics AudioToolbox AVFoundation CoreMedia QuartzCore SystemConfiguration"
                     ,LinkerFlags="-lz -liconv -lstdc++"
                     )]

提供されたサンプル プロジェクトを使用して、自分のデバイスでライブラリをネイティブに使用できますが、まったくコンパイルできません。LinkTarget.ArmV6 を使用します。これを削除して LinkTarget.ArmV7 のままにしておくと、コンパイルはされますが、動作しません。バインドされた関数は、作成した単純なテスト ライブラリでも動作しません。

私が間違っている場合は訂正してください。これは、私の電話にarmv6が必要であることを意味しますか?

これが、armv6 を使用してサンプル ライブラリを動作させることができる理由です。

これが事実である場合、libがサポートしているように見えるのに、armv6サポートでビルドされない理由を誰かが知っているかどうかを知る必要があります。

4

1 に答える 1

0

私が間違っている場合は訂正してください。これは、私の電話にarmv6が必要であることを意味しますか?

新しい iPhone は armv7 を使用しますが、armv6 コードを実行できます。

Assertion failed: (_mode == modeFinalAddress), function finalAddress, file /SourceCache/ld64/ld64-127.2/src/ld/ld.hpp, line 588.
0  0x100011c51  __assert_rtn + 81
1  0x10008d45c  ld::tool::OutputFile::addressOf(ld::Internal const&, ld::Fixup const*, ld::Atom const**) + 172
2  0x10008f361  ld::tool::OutputFile::applyFixUps(ld::Internal&, unsigned long long, ld::Atom const*, unsigned char*) + 369
3  0x10008c3b7  ld::tool::OutputFile::writeOutputFile(ld::Internal&) + 807
4  0x100085079  ld::tool::OutputFile::write(ld::Internal&) + 153
5  0x1000121ab  main + 1147
collect2: ld returned 1 exit status

それは Apple が提供するリンカのクラッシュです。これは珍しいことであり、破損したものが供給されている可能性があります。

lipoonの出力を表示していますが、 onlibscanditsdk-iphone-2.1.17.aを使用しています。二人の間に何が起こったのですか?[LinkWith]libmeScanditWrapper.a

于 2012-07-24T20:29:50.687 に答える