无法编译monotouch绑定库

时间:2012-07-24 20:09:05

标签: xamarin.ios xcode4.3 ld static-linking ios5.1

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

到目前为止,我一直没有成功。图书馆说它支持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来获取示例库。

如果是这种情况,我需要知道是否有人有任何想法,为什么它似乎不支持armv6支持它。

1 个答案:

答案 0 :(得分: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提供的链接器崩溃。这种情况并不常见,很可能意味着它正在遭受腐败。

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