我正在使用sharpie
bind
命令为我的iOS
库获取 API 接口xamarin
sharpie bind --namespace=XXX --sdk=iphoneos9.2 Headers/*.h
Run Code Online (Sandbox Code Playgroud)
@protocol
绑定有问题:
The type or namespace name `IProfileDelegate' could not be found. Are you missing an assembly reference?
Run Code Online (Sandbox Code Playgroud)
这是它的生成方式:
interface XLibrary : IProfileDelegate
{
[Wrap ("WeakProfileDelegate")]
[NullAllowed]
MB_ProfileDelegate ProfileDelegate { get; set; }
Run Code Online (Sandbox Code Playgroud)
我知道它会创建空ProfileDelegate
然后编译器或用方法填充它,但我的问题是IProfileDelegate
没有找到。
@protocol ProfileDelegate <NSObject>
@required
- (void)GetProfileFinished:(NSString*)_data;
- (void)SetProfileFinished:(NSString*)_data;
@end
Run Code Online (Sandbox Code Playgroud)
I
符号的区别(我猜是为@protocols 保留的)。如何sharpie
生成正确的 api 定义?
我能够删除所有I
前缀并成功编译,但我宁愿修复它,以免每次需要更新源库时都重复此操作。
谢谢
我正在尝试绑定自定义本机iOS框架并在sharpie绑定输出绑定的第一阶段中获取此错误.当我点击以下命令时,下面是命令和日志:
sharpie bind --output = filename --namespace = namespacename --sdk = iphoneos11.4/path/to/the/headerfile
日志:
System.Exception:不支持的clang可用性平台:/ bridge/build/vsts/__ .cs:192在System.Linq.Enumerable + SelectManySingleSelectorIterator`2 [TSource,TResult] .MoveNext()[0x0006f] in <3fb92ec709f44a579da6a23087df403d>:0 at Sharpie.Bind.Massagers.AvailabilityMassager.Massage(ICSharpCode.NRefactory.CSharp.EntityDeclaration实体)[0x00092]位于/Users/builder/vsts/_work/2/s/Sharpie.Bind/Massagers/AvailabilityMassager.cs:55,位于Sharpie.Bind.Massagers.AvailabilityMassager.VisitPropertyDeclaration(ICSharpCode.NRefactory.CSharp.PropertyDeclaration propertyDeclaration) [0x00000]在/Users/builder/vsts/_work/2/s/Sharpie.Bind/Massagers/AvailabilityMassager.cs:29 at ICSharpCode.NRefactory.CSharp.PropertyDeclaration.AcceptVisitor(ICSharpCode.NRefactory.CSharp.IAstVisitor visitor)[0x00000 ] in:0,ICSharpCode.NRefactory.CSharp.DepthFirst AstVisitor.VisitChildren(ICSharpCode.NRefactory.CSharp.AstNode节点)[0x00010] in:0,ICSharpCode.NRefactory.CSharp.DepthFirstAstVisitor.VisitTypeDeclaration(ICSharpCode.NRefactory.CSharp.TypeDeclaration typeDeclaration)[0x00000] in:0,位于Sharpie.Bind. Massagers.AvailabilityMassager.VisitTypeDeclaration(ICSharpCode.NRefactory.CSharp.TypeDeclaration typeDeclaration)[0x00006] in /Users/builder/vsts/_work/2/s/Sharpie.Bind/Massagers/AvailabilityMassager.cs:24 at ICSharpCode.NRefactory.CSharp. TypeDeclaration.AcceptVisitor(ICSharpCode.NRefactory.CSharp.IAstVisitor visitor)[0x00000] in:0,ICSharpCode.NRefactory.CSharp.DepthFirstAstVisitor.VisitChildren(ICSharpCode.NRefactory.CSharp.AstNode node)[0x00010] in:0,ICSharpCode.NRefactory. CSharp.DepthFirstAstVisitor.VisitSyntaxTree(ICSharpCode.NRefactory.CSharp.SyntaxTree syntaxTree)[0x00000] in:0,位于/ Users/builder/vsts /中的Sharpie.Bind.DocumentSyntaxTree.AcceptVisitor(ICSharpCode.NRefactory.CSharp.IAstVisitor visitor)[0x00015] _work/2/s/Sharpie.Bind/DocumentSyntaxTree.cs:37位于/ Users/builder/vsts中的Sharpie.Bind.BindingMassager.Massage(ICSharpCode.NRefactory.CSharp.AstNode astNode,Sharpie.Bind.BindingTarget bindingTarget)[0x00033] /_work/2/s/Sharpie.Bind/BindingMassager.cs:103位于/ Users/builder/vsts/_work/2/s/Sharpie中的Sharpie.Bind.BindingFrontend.Bind(Clang.Ast.Decl decl)[0x000b5] .Bind/BindingFrontend.cs:61位于Claie.Driver的/Users/builder/vsts/_work/2/s/Sharpie/BindTool.cs:164的Sharpie.BindTool.HandleTranslationUnit(Clang.Ast.TranslationUnitDecl decl)[0x0018b] .HandleTranslationUnit(Clang.Ast.TranslationUnitDecl translationUnit)[0x00000] in /Users/builder/vsts/_work/2/s/Clang/Driver.cs:158 at Clang.Driver.HandleTranslationUnit(System.IntPtr translationUnit)[0x00000] in /Users/builder/vsts/_work/2/s/Clang/Driver.cs:148 at(wrapper managed-to-native)Clang.Driver:RunInternal(Clang.Driver,string [],string,Clang.Frontend.DiagnosticConsumer )在Clang.Driver.Run(System.String [] inputFiles,System.S tring [] clangArgs,Clang.Frontend.DiagnosticConsumer diagnosticConsumer)[0x00177]位于/Users/builder/vsts/_work/2/s/Clang/Driver.cs:139位于/ …
我正在尝试将我的 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 …
Run Code Online (Sandbox Code Playgroud) 我正在尝试将此Folding Cell绑定到Xamarin项目,但是没有看到这些方向中提到的*.a文件.
sudo gem install cocoapods
sharpie pod init ios FoldingCell
sharpie pod bind
Run Code Online (Sandbox Code Playgroud)
如页面底部所示,我应按照这些说明制作一个绑定项目,但方向需要该*.a
文件.
由于我有FoldingCell框架的源代码,我知道我可以进行所需的更改.
(免责声明,我的所有iOS工作都是使用Xamarin,而不是XCode)