2012-07-24 66 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