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)
顺便说一句,-lz
是 dylib
或 tdb
in Xamarin.iOS
?
文件 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(大文件存储)上。
所以我们推荐以下内容
- 安装gitlfs
brew install git-lfs
git lfs install
注意:如果你
没有安装 Homebrew,请按照此处的说明进行操作:
http://brew.sh
克隆存储库并使用克隆的存储库而不是常规的
下载。克隆很重要,因为存储库包含
子模块。
git clone git@github.com:BlinkID/blinkid-xamarin.git
获取所有子模块
cd blinkid-xamarin
git submodule init
git submodule update --recursive
之后,尝试 BlinkIDiOSBinding 项目,如果成功请告诉我们
有效:)
我正在像这样绑定一个 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)
顺便说一句,-lz
是 dylib
或 tdb
in Xamarin.iOS
?
文件 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(大文件存储)上。
所以我们推荐以下内容
- 安装gitlfs
brew install git-lfs
git lfs install
注意:如果你 没有安装 Homebrew,请按照此处的说明进行操作: http://brew.sh
克隆存储库并使用克隆的存储库而不是常规的 下载。克隆很重要,因为存储库包含 子模块。
git clone git@github.com:BlinkID/blinkid-xamarin.git
获取所有子模块
cd blinkid-xamarin
git submodule init
git submodule update --recursive
之后,尝试 BlinkIDiOSBinding 项目,如果成功请告诉我们 有效:)