本机链接错误:找不到架构arm64

时间:2016-11-16 06:00:10

标签: xamarin xamarin.ios xamarin.ios-binding

我正在绑定像这样的Xcode项目:

enter image description here

enter image description here

然后,我创建了一个静态库,其中包含DevQPSDKCore目录和参考QPSDKCore.framework中的代码,生成库libQupaiSDK.a

最后,创建了一个新的Xamarin绑定库

enter image description here

libQupaiSDK.linkwith.cs

enter image description here

运行项目获取错误:

  

MTOUCH:错误MT5209:本机链接错误:未找到框架QPSDKCore用于架构arm64
      MTOUCH:错误MT5202:本机链接失败。请查看构建日志。

当我删除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 Studio 6.1.2(build 44)
Xcode 8.1(8B62)

BTW,-lz dylibtdb中的Xamarin.iOS

SDK Source

2 个答案:

答案 0 :(得分: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部分的细节,我将无法找到解决方案。

答案 1 :(得分:0)

我对MicroBlink库有同样的问题。再次下载库后错误消失了。

看看这个Link

此错误与没有框架(二进制)的事实有关 在存储库中找到。

存储库包含BlinkID SDK(本机)的git子模块。 BlinkID SDK具有存储在git lfs(大文件存储)上的二进制文件。

所以我们建议以下

  1. 安装git lfs
    brew install git-lfs
    git lfs install
  2. 注意:如果你 没有安装Homebrew,请按照此处的说明操作: http://brew.sh

    1. 克隆存储库并使用克隆的repo而不是常规 下载。克隆很重要,因为存储库包含 子模块。
      git clone git@github.com:BlinkID/blinkid-xamarin.git

    2. 获取所有子模块

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

    3. 之后,尝试BlinkIDiOSBinding项目,如果有,请告诉我们 工作:)