1

Xamarin 内で Objective-C ライブラリと C# をバインドしようとしています。バインドしようとしているクラス ヘッダーは次のとおりです。

@interface MGLPolyline : MGLMultiPoint <MGLOverlay>

+ (instancetype)polylineWithCoordinates:(CLLocationCoordinate2D *)coords
                              count:(NSUInteger)count;

私が理解できないのは、関数の最初のパラメーターを何にするかです。私はバインディングをこれにしようとしました:

Static][Export("polylineWithCoordinates:count:")]
    [Internal]
    MGLPolyLine PolyLineWithCoordinates(IntPtr coord, int count);



public partial class MGLPolyLine
{
    public static unsafe MGLPolyLine PolyLineWithCoordinates(CLLocationCoordinate2D[] coords) 
    {
        unsafe
        {
            GCHandle handle = GCHandle.Alloc(coords);
            IntPtr pointer = (IntPtr)handle;

            MGLPolyLine line = MGLPolyLine.PolyLineWithCoordinates(pointer,2);

            handle.Free();
            return line;
        }

    }
}

上記のコードは常に MGLPolyLine.PolyLineWithCoordinates(pointer, 2) 呼び出しから null を返すため、配列を正しく渡していないと思います。このバインディングを行う正しい方法は何ですか?

ありがとう

編集

Objective-Sharpie を使用して、それが作成するバインディングを確認しました。これが得られたものです。

// +(instancetype)polygonWithCoordinates:(CLLocationCoordinate2D *)coords count:(NSUInteger)count;
[Static]
[Export ("polygonWithCoordinates:count:")]
unsafe MGLPolygon PolygonWithCoordinates (CLLocationCoordinate2D* coords, nuint count);

問題は、「btouch: Unknown kind CoreLocationCoordinate2D* coords in method 'MGLPolygon.PolygonWithCoordinates' (B1002)」というエラーが表示されることです。

4

1 に答える 1