【问题标题】:Problems binding a static library (.a)绑定静态库 (.a) 的问题
【发布时间】:2016-08-02 09:29:36
【问题描述】:

我试图弄清楚如何为我拥有的静态库创建一个有效的绑定项目。我们没有自己创建静态库,但我们有权使用它。

我尝试按照此页面上的步骤操作但没有成功:https://developer.xamarin.com/guides/ios/advanced_topics/binding_objective-c/walkthrough/

基本上发生的事情是,当运行命令“sharpie bind --sdk=iphoneos9.3 *.a”时,我得到了一个错误列表(见帖子底部) 因此,在玩了几个小时之后,我决定阅读 ApiDefinition。显然,上面链接的指南中描述的过程已被弃用,我应该将 .a 文件添加为本地参考。

根据 ApiDefinition 中的 cmets,我们必须手动创建绑定。问题是,我不知道库中的方法名称。另外,即使我这样做了,库也很大(我们桌面版本的头文件已经有 36k 行)。

有人可以告诉我们如何进行吗?

Sharpie 命令的错误列表:

Macbook-Pro:iossdk researchdevelopment$ sharpie bind --sdk=iphoneos9.3 libHCNetSDK_sim.a
Parsing 1 header files...
warning: /Users/researchdevelopment/Desktop/iossdk/libHCNetSDK_sim.a: 'linker' input unused
warning: argument unused during compilation: '-c'
warning: argument unused during compilation: '-fno-spell-checking'
warning: argument unused during compilation: '-Xclang -detailed-preprocessing-record'
warning: argument unused during compilation: '-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk'
warning: argument unused during compilation: '-D NS_BUILD_32_LIKE_64'
warning: argument unused during compilation: '-miphoneos-version-min=9.3'
warning: argument unused during compilation: '-I /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include'
warning: argument unused during compilation: '-I /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1'
error: unable to handle compilation, expected exactly one compiler job in ''
Error while processing /Users/researchdevelopment/Desktop/iossdk/libHCNetSDK_sim.a.

Submitting usage data to Xamarin...
Submitted - thank you for helping to improve Objective Sharpie!

Done. Exiting with error code 1.
error: Clang failed to parse input and exited with code 1

【问题讨论】:

  • 您可以访问本机库的头文件吗? Objective Sharpie 解析这些头文件以提取方法签名以生成 ApiDefinition.cs 和 StructsAndEnums.cs 文件
  • 我确实有头文件,但 Objective Sharpie 似乎无法解析它们。我尝试修改头文件并删除部分,但它生成的只是一个 StructsAndEnums.cs 而没有 ApiDefinition.cs 。关于它为什么这样做的任何线索?解决这个问题也能解决我的主要问题吗?

标签: xamarin.ios


【解决方案1】:

我不相信您可以将 .a 文件传递​​给 Objective Sharpie。当我上次构建绑定项目时,我关注了this guide

大约进行到一半,有一个示例说明如何运行 Objective Sharpie 来生成绑定,它只传递标头,而不传递编译后的二进制文件。

【讨论】:

  • 它只为我生成一个 StructsAndEnums.cs。即使将头文件剥离为 2 个方法调用,它也不会创建 ApiDefinition.cs
  • 我认为这是因为我们正在执行 PInvokes 而不是正常绑定。
猜你喜欢
  • 1970-01-01
  • 2014-04-21
  • 2020-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多