Native linking error: framework not found for architecture arm64

Native linking error: framework not found for architecture arm64

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

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

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

libQupaiSDK.linkwith.cs

运行 项目出现错误:

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 Studio 6.1.2(内部版本 44)
Xcode8.1(8B62)

顺便说一句,-lzdylibtdb in Xamarin.iOS ?

SDK Source

文件 libQupaiSDKBinding.a 编译时引用了 QPSDKCore.framework,而不是 QPSDKCore.a

您需要做的是从绑定项目中删除 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 和右侧本机引用的变化。

必须说你遇到的错误有点神秘,如果你的 post 没有包含有关 XCode 部分的详细信息,我将无法找到解决方案。

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

看看这个Link

这个错误与没有框架(二进制)有关 在存储库中找到。

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

所以我们推荐以下内容

  1. 安装gitlfs
    brew install git-lfs
    git lfs install

注意:如果你 没有安装 Homebrew,请按照此处的说明进行操作: http://brew.sh

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

  2. 获取所有子模块

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

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