2017-06-14 68 views
1

我正在研究Xamarin並嘗試在我的iPad上安裝iOS應用程序。原生鏈接錯誤無法爲XXX創建緊湊展開不使用標準框架(MT5209)

我想鏈接一個Ada靜態庫。

所以我有一個libMyLibrary.a + libgnat.a文件和一個C頭代碼(MyLibrary.h)。

  • 在Xamarin中,我創建了一個綁定庫項目並添加了我的庫。
  • 在Xamarin中,我將上述項目添加爲我的iPad應用程序的參考。

首先,我使用P磁帶庫通信/有DllImport(「__Internal」)和組裝我的LIB調用(所以我沒有任何的mTouch參數):

[assembly: LinkWith(「libMyLibrary.a」, SmartLink=true, ForceLoad=true)] 
[assembly: LinkWith(「libgnat.a」, SmartLink=true, ForceLoad=true)] 

但是,當我其部署到iPad上我有很多本地連接錯誤:

Native linking error: warning: could not create compact unwind for XXX does not use standard frame (MT5209) 

我試圖使用MonoTouch的論點,但沒有成功:

任何想法?


配置:

  • 的iOS 10.3.2
  • Xamarin 6.3
  • 部署目標10.3
+0

我很佩服編譯C#代碼爲iOS,同時鏈接到一個靜態阿達LIB的問題。對於評論中更有幫助的部分:您是否檢查過靜態Ada庫是否爲正確的體系結構(即iOS ARM體系結構)編譯?也許嘗試將它鏈接到ObjC以確保它可以工作。 – flyx

+0

你好,這個問題是合法的,是的:我有Ada庫編譯爲正確的目標和lib接口C兼容,我相信這是一個安全的選擇)。事實上,我找到了解決方案,我需要一些時間來發布答案。 – LoneWanderer

回答

2

與此周圍掙扎了幾天後,我們想出了一些工作。

我們給MonoTouch的確切指令如下:

-gcc_flags "-L${ProjectDir} -lMyLibrary -lgnat -force_load ${ProjectDir}/libMyLibrary.a -Wl,-no_compact_unwind" 

注意:

  • 蚊蚋LIB文件拋開libMyLibrary.a
  • libMylibrarry在引用了兩次命令

And ...voilà!

Apprently,我沒有正確在第一時間將其添加...