No StructsAndEnums.cs Generated From Objective Sharpie

I need to programmatically mount a virtual drive on Mac. To accomplish that, I am using Fuse for macOS v3.5.4. After installing the Fuse framework, I am attempting to create a binding library. I am using Objective Sharpie v3.3.0 command line tool to help bootstrap the first pass of the binding.

$ sharpie bind --namespace=OSXFUSE -sdk macosx10.12 -framework /Library/Frameworks/OSXFUSE.framework

Result:

Parsing 1 header files...

Binding...
[write] ApiDefinitions.cs

Binding Analysis:
Automated binding is complete, but there are a few APIs which have been flagged with [Verify] attributes. While the entire binding should be audited for best API design practices, look more closely at APIs with the following Verify attribute hints:

MethodToProperty (10 instances):
An Objective-C method was bound as a C# property due to convention such as taking no parameters and returning a value (non-void return). Often methods like these should be bound as properties to surface a nicer API, but sometimes false-positives can occur and the binding should actually be a method.

StronglyTypedNSArray (4 instances):
A native NSArray* was bound as NSObject[]. It might be possible to more strongly type the array in the binding based on expectations set through API documentation (e.g. comments in the header file) or by examining the array contents through testing. For example, an NSArray* containing only NSNumber* instances can be bound as NSNumber[] instead of NSObject[].

ConstantsInterfaceAssociation (2 instances):
There's no foolproof way to determine with which Objective-C interface an extern variable declaration may be associated. Instances of these are bound as [Field] properties in a partial interface into a nearby concrete interface to produce a more intuitive API, possibly eliminating the 'Constants' interface altogether.

Once you have verified a Verify attribute, you should remove it from the binding source code. The presence of Verify attributes intentionally cause build failures.

For more information about the Verify attribute hints above, consult the Objective Sharpie documentation by running 'sharpie docs' or visiting the following URL: http://xmn.io/sharpie-docs

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

Done.

Shouldn’t it be outputting StructsAndEnums.cs as well? What am I doing wrong?

Answers

  • DenisGordinDenisGordin RUMember ✭✭

    I have the same issues. For example, after doing "sharpie" on one of my .h files I got the result:

    Parsing 1 header files...
    
    Binding...
      [write] StructsAndEnums.cs
    
    Binding Analysis:
      Automated binding is complete, but there are a few APIs which have been flagged
      with [Verify] attributes. While the entire binding should be audited for best API
      design practices, look more closely at APIs with the following Verify attribute
      hints:
    
      InferredFromMemberPrefix (3 instances):
        The name of this originally anonymous declaration was taken from a common prefix
        of its members.
    
      Once you have verified a Verify attribute, you should remove it from the binding
      source code. The presence of Verify attributes intentionally cause build failures.
    
      For more information about the Verify attribute hints above, consult the Objective
      Sharpie documentation by running 'sharpie docs' or visiting the following URL:
    
        http://xmn.io/sharpie-docs
    
    Submitting usage data to Xamarin...
      Submitted - thank you for helping to improve Objective Sharpie!
    
    Done.
    

    But StructsAndEnums.cs file hasn't been written and I know that the .h file has some definitions of enums.

    I was using direct binding command, like this:

    sharpie bind -output [name] -namespace [namespace] -sdk iphoneos11.4 [path/to/h_file]

Sign In or Register to comment.