Sri*_*ija 4 xamarin.ios xamarin objective-sharpie
我正在尝试将我的 swift 框架与 Xamarin 绑定。为此,我正在使用客观的 Sharpie。
sharpie bind -sdk iphoneos11.1 MyFramework.framework/Headers/MyFramework-Swift.h -output=MyFrameworkCS -namespace=MyFramework
我得到了 APIDefinitions.cs 文件,但它有超过 79000 行并且有很多错误。StructsAndEnums.cs 文件也很大。
我的框架(和 .h 文件)只有 UIKit、AVFoundation 和 Foundation 的导入语句。但是 APIDefinitions.cs 有这个。
using System;
using AVFoundation;
using AudioToolbox;
using AudioUnit;
using CloudKit;
using CoreAnimation;
using CoreAudio;
using CoreData;
using CoreFoundation;
using CoreGraphics;
using CoreImage;
using CoreLocation;
using CoreMIDI;
using CoreMedia;
using CoreMidi;
using CoreText;
using CoreVideo;
using Darwin;
using Dispatch;
using FileProvider;
using Foundation;
using HyperSecureSDK;
using IOSurface;
using ImageIO;
using Intents;
using MediaToolbox;
using Metal;
using ObjCRuntime;
using ObjectiveC;
using OpenGLES;
using Security;
using UIKit;
using simd;
Run Code Online (Sandbox Code Playgroud)
我对 Xamarin 非常陌生,并且超级卡在这里。任何帮助将不胜感激!
您需要定义一个范围,以便并非所有其他库都显示在您的 APIDefinition.cs 中,如https://developer.xamarin.com/guides/cross-platform/macios/binding/objective-sharpie/examples 中所述/先进的/
您会注意到我们向 Objective Sharpie 传递了一个 -scope build/Headers 参数。因为 C 和 Objective-C 库必须 #import 或包含其他头文件,这些头文件是库的实现细节而不是您希望绑定的 API,所以 -scope 参数告诉 Objective Sharpie 忽略未在文件中某处定义的任何 API -scope 目录。
您会发现 -scope 参数对于干净实现的库通常是可选的,但是显式提供它没有害处。
这应该删除 APIDefinition.cs 中其他库的所有绑定
sharpie bind -sdk iphoneos11.1 -scope MyFramework.framework/Headers/ MyFramework.framework/Headers/MyFramework-Swift.h
-output=MyFrameworkCS -namespace=MyFramework
Run Code Online (Sandbox Code Playgroud)
小智 5
您需要限制您的范围,添加标题所在的路径。使用-scope
命令和library/Headers/
参数。
例如。 sharpie bind -sdk iphoneos11.2 -output myLibrary -scope myLibrary/Headers/ mainHeader.h
希望能帮到你。
归档时间: |
|
查看次数: |
1281 次 |
最近记录: |