2016-11-16 44 views
0

我綁定的Xcode項目是這樣的:本地連接錯誤:框架找不到架構arm64

enter image description here

enter image description here

然後,我創建了一個靜態庫包含在DevQPSDKCore目錄代碼產生文庫libQupaiSDK.a

最後,創建了一個新的Xamarin結合文庫

enter image description here

libQupaiSDK.linkwith.cs

enter image description here

運行該項目得到錯誤:

MTOUCH: error MT5209: Native linking error: framework not found QPSDKCore for architecture arm64
MTOUCH: error MT5202: Native linking failed. Please review the build log.

當我成功刪除libQupaiSDK.a,該項目運行。

我無法從xamarin日誌中得到原因,任何機構都可以幫助我,謝謝。

更新

這兩個庫是脂肪庫。

$ lipo -info libQupaiSDK.a 
Architectures in the fat file: libQupaiSDK.a are: i386 armv7 x86_64 arm64 
$ lipo -info QPSDKCore.a 
Architectures in the fat file: QPSDKCore.a are: armv7 i386 x86_64 arm64 

Xamarin工作室6.1.2(構建44)
的Xcode 8.1(8B62)

順便說一句,-lzdylibXamarin.iOStdb

SDK Source

+0

如果您運行'xcrun -sdk iphoneos lipo -info libQupaiSDK.a',輸出是什麼? – SushiHangover

+0

@SushiHangover胖庫:胖文件中的體系結構:libQupaiSDK.a是:i386 armv7 x86_64 arm64 –

回答

0

文件libQupaiSDKBinding.a編譯引用QPSDKCore.framework,不QPSDKCore.a

.a file references framework

你需要做的是從結合項目中刪除QPSDKCore.a文件,並正確地引用QPSDKCore.framework(見topic on embedding frameworks) 。

基本上,在QPSDKCore.framework複製到Qupai.iOS項目文件夾和編輯的.csproj文件中添加這些行:

<ItemGroup> 
    <NativeReference Include="QPSDKCore.framework"> 
     <IsCxx>False</IsCxx> 
     <Kind>Framework</Kind> 
    </NativeReference> 
    </ItemGroup> 

重裝項目後,你會看到你的框架作爲參考項目,你將能夠編譯運行應用程序。

請注意左側的.csproj更改以及右側的本機引用。

running your app after suggested changes

必須說你有錯誤是一種神祕的,如果您的文章沒有包括有關Xcode的部分細節,我無法找到解決方案。

+0

亞歷克斯,我還有一個問題,我通過引用.a直接綁定了一些框架,並且那些工作之前很好,爲什麼這個sdk失敗? –

+0

好問題。 簡短的回答 - 沒有。 這個失敗的原因是你實際上綁定了一個'.a'庫X,它已經引用了框架Y.在最終的應用程序中編譯所有這些時,鏈接器無法找到框架Y(即使你有一個Y命名的庫)。 在你的情況下,如果你只想使用Y框架(沒有X庫),你可以將它作爲一個框架和一個庫綁定。 X和Y之間的依賴關係在這裏是關鍵 –

+1

我將重新檢查框架引用路徑。感謝您的詳細解釋。祝你有美好的一天。 :) –

0

我對MicroBlink庫有同樣的問題。再次下載庫後錯誤消失。

看這個Link

此錯誤相關的事實是沒有框架(二進制) 在倉庫中找到。

存儲庫包含BlinkID SDK(本機)的git子模塊。 BlinkID SDK具有存儲在git lfs(大文件存儲)上的二進制文件。

所以,我們提出以下建議

  1. 安裝git的LFS
    brew install git-lfs
    git lfs install

注意:如果 不具備自制安裝,請從這裏的說明: http://brew.sh

  1. 克隆存儲庫,並使用克隆的回購,而不是隻是經常 下載。克隆很重要,因爲存儲庫包含 子模塊。
    git clone [email protected]:BlinkID/blinkid-xamarin.git

  2. 抓取所有子模塊

    cd blinkid-xamarin
    git submodule init
    git submodule update --recursive

  3. 之後,嘗試BlinkIDiOSBinding項目,並讓我們知道,如果它 工程:)

相關問題