2

我一直在尝试绑定一个名为Scandit的库,用于从图像中扫描条形码。

到目前为止,我一直没有成功。图书馆说它支持 armv6 arm7 和 i386。但我无法建造它。

lipo -info libscanditsdk-iphone-2.1.17.a
fat 文件中的架构: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的输出,libscanditsdk-iphone-2.1.17.a但您正在使用[LinkWith]on libmeScanditWrapper.a。两人之间发生了什么?

于 2012-07-24T20:29:50.687 回答