2012-07-24 46 views
2

我一直在试图绑定一个名为Scandit用于从图像扫描条码库。麻烦编制的MonoTouch绑定库

到目前为止,我一直不成功。图书馆表示它支持armv6 arm7和i386。但我无法建立它。

脂-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支持构建。

回答

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提供的链接程序崩溃。这种情况并不常见,可能意味着它正在遭受损坏。

您在上显示libscanditsdk-iphone-2.1.17.a的输出,但您在libmeScanditWrapper.a上使用[LinkWith]。两者之间发生了什么?

+0

对不起,这是一个复制和粘贴错误我在一个点试图只是在我自己的lib包装scandit都使用相同的链接标志。在我发布这个消息之后,我注意到scandit有一个版本2.2,似乎没有这个问题。 – Nathan 2012-07-24 21:12:50