首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Xamarin.Mac绑定到系统框架?

如何使用Xamarin.Mac绑定到系统框架?
EN

Stack Overflow用户
提问于 2017-10-25 21:48:15
回答 1查看 373关注 0票数 2

我正在开发一个与智能卡交互的应用程序。为此,我想使用Mac上的标准CryptoTokenKit框架(位于/System/Library/Frameworks/CryptoTokenKit.framework).

这个链接表明可以在Mac项目中绑定框架:https://developer.xamarin.com/guides/cross-platform/macios/native-references/

我已经使用以下切分命令创建了一个ApiDefinition.cs文件和一个StrucsAndEnums.cs文件: sharpie bind -framework ./CryptoTokenKit.framework -sdk macosx10.13 -o ~/CryptoTokenKitBinding

我在互联网上找不到任何关于如何实现上述文件并开始使用框架的信息。

EN

回答 1

Stack Overflow用户

发布于 2017-10-26 00:31:24

在解决方案中创建一个Xamarin.Mac绑定项目。

NativeReference添加到:

代码语言:javascript
复制
/System/Library/Frameworks/CryptoTokenKit.framework

使用sharpie绑定它

代码语言:javascript
复制
sharpie bind \
    -o CryptoTokenKitFramework \
    -namespace CryptoTokenKit \
    -sdk macosx10.13 \
    -f /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CryptoTokenKit.framework

绑定项目模板和ApiDefinitions.cs的输出之间存在不匹配,因此您可以删除ApiDefinition.cs并添加ApiDefinitions.cs,也可以直接覆盖创建的模板:

代码语言:javascript
复制
mv CryptoTokenKitFramework/ApiDefinitions.cs CryptoTokenKitFramework/ApiDefinition.cs

将有许多属性,如(版本将随它们而变化):

代码语言:javascript
复制
[Watch (4,0), TV (11,0), Mac (10,12), iOS (10,0)]

由于这些都是iOS、观看、电视上的私有框架,所以把这些平台去掉吧。保留Mac属性和原始版本:

代码语言:javascript
复制
[Mac (10,11)]

注意:PlatformAttribute已经过时了,但sharpie仍在使用它(假设向后版本兼容(?)),所以如果您真的想清理构建输出,可以使用Introduced

代码语言:javascript
复制
[Introduced (PlatformName.MacOSX, 10, 11, PlatformArchitecture.Arch64)]

将有一些[Verify]属性需要检查/更正。也就是说,TKSmartCardUserInteraction.CancelTKSmartCardSlot.MakeSmartCard都应该是方法,而不是属性。

示例/生成:

代码语言:javascript
复制
// -(TKSmartCard * _Nullable)makeSmartCard;
[NullAllowed, Export ("makeSmartCard")]
[Verify (MethodToProperty)]
TKSmartCard MakeSmartCard { get; }

已更正:

代码语言:javascript
复制
// -(TKSmartCard * _Nullable)makeSmartCard;
[NullAllowed, Export("makeSmartCard")]
TKSmartCard MakeSmartCard();

修复其余的[Verify]属性和编译器错误,有一堆糟糕的方法签名、指针、返回类型等。它们是生成的,需要更正。

注意:为了让您的工作更轻松,请确保您使用的是最新的Sharpie版本:

代码语言:javascript
复制
Version:  3.4.0
SHA1:     c12859dac8d43121b5a9ed866a0db8409f9df817
URL:      https://dl.xamarin.com/objective-sharpie/ObjectiveSharpie-3.4.0.pkg
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46934202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档