标签: objective-sharpie

Sharpie 绑定objective-c @protocols 问题

我正在使用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前缀并成功编译,但我宁愿修复它,以免每次需要更新源库时都重复此操作。

谢谢

xamarin objective-sharpie

6
推荐指数
1
解决办法
948
查看次数

不受支持的clang可用性平台:'bridgeos'

我正在尝试绑定自定义本机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位于/ …

ios objective-sharpie xamarin.ios-binding

5
推荐指数
1
解决办法
321
查看次数

与客观 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 …
Run Code Online (Sandbox Code Playgroud)

xamarin.ios xamarin objective-sharpie

4
推荐指数
2
解决办法
1281
查看次数

如何将基于swift的.Framework或Pod绑定到Xamarin?

我正在尝试将此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)

xamarin.ios ios swift objective-sharpie

3
推荐指数
1
解决办法
1628
查看次数