我一直在尝试绑定一个名为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支持它。
答案 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
。这两者之间发生了什么?