2017-10-19 65 views
2

我試圖通過這個指南走:麻煩的Objective-C庫結合,以C#與目的記號筆

https://developer.xamarin.com/guides/ios/advanced_topics/binding_objective-c/walkthrough/

試圖創建此github上項目綁定:

https://github.com/lminhtm/LMGaugeView

使用Sharpie 3.4。

我遇到了以下問題:

  1. ,因爲我建立針對iOS11我無法生成脂肪的二進制與結構i386 armv7 x86_64 arm64。我只能生成一個Fat體系結構x86_64arm64,嘗試其他人給我錯誤消息invalid iOS deployment version, iOS 10 is the max deployment target for 32-bit targets。這是預期的嗎?

  2. 當我使用Sharpie時,我能夠生成API和Struct文件,但是,這些文件中的每一個都很龐大,結構最終爲24K +行,API 54K +行。我也跟着一個YouTube教程,他得到的輸出大約有200行左右,所以我的這個巨大的事實讓我覺得有些事情正在發生。他的教程不是爲我的同一個Objective-C項目做的,但我甚至嘗試了他所做的一樣,最後得到了相同的結果。

  3. 結構file最終有超過7K的錯誤,我看到無數的線條,看起來是這樣的:

    // extern long double tanhl (long double) __attribute__((const)) __attribute__((nothrow)); 
    [DllImport ("__Internal")] 
    [Verify (PlatformInvoke)] 
    static extern [unsupported Builtin: long double] tanhl ([unsupported Builtin: long double]); 
    

凡缺少標識符名稱和具有這種[不支持內建:一塊我不不明白。

還有其他iOS版本以及watchOS和TV的無數參考,因此它似乎試圖爲每個操作系統和版本創建API和Structs,這就意味着爲什麼這些文件會非常大。下面是從結構文件中的小片段:

// extern CGPathRef _Nullable CGPathCreateCopyByTransformingPath (CGPathRef _Nullable path, const CGAffineTransform * _Nullable transform) __attribute__((availability(ios, introduced=5.0))) __attribute__((cf_audited_transfer)); 
    [iOS (5,0)] 
    [DllImport ("__Internal")] 
    [Verify (PlatformInvoke)] 
    [return: NullAllowed] 
    static extern unsafe CGPathRef* CGPathCreateCopyByTransformingPath ([NullAllowed] CGPathRef* path, [NullAllowed] CGAffineTransform* transform); 

    // extern CGMutablePathRef _Nullable CGPathCreateMutableCopy (CGPathRef _Nullable path) __attribute__((availability(ios, introduced=2.0))) __attribute__((cf_audited_transfer)); 
    [iOS (2,0)] 
    [DllImport ("__Internal")] 
    [Verify (PlatformInvoke)] 
    [return: NullAllowed] 
    static extern unsafe CGMutablePathRef* CGPathCreateMutableCopy ([NullAllowed] CGPathRef* path); 

    // extern CGMutablePathRef _Nullable CGPathCreateMutableCopyByTransformingPath (CGPathRef _Nullable path, const CGAffineTransform * _Nullable transform) __attribute__((availability(ios, introduced=5.0))) __attribute__((cf_audited_transfer)); 
    [iOS (5,0)] 
    [DllImport ("__Internal")] 
    [Verify (PlatformInvoke)] 
    [return: NullAllowed] 
    static extern unsafe CGMutablePathRef* CGPathCreateMutableCopyByTransformingPath ([NullAllowed] CGPathRef* path, [NullAllowed] CGAffineTransform* transform); 

我知道這些文件應該是這樣小的,特別是因爲Objective-C代碼是一個頭文件。我在這裏做錯了什麼?

如果需要,我可以提供更多細節!

+1

你有安裝最新版本的XCode(9)和Sharpie嗎? 我想幫忙,對iOS綁定有一些經驗 –

+1

我很快檢查了您提到的窗格。原來,你必須擁有最新的XCode和Sharpie(3.4是當前版本)。你可以通過運行'sharpie update'來更新sharpie。 然後你可以生成一個綁定。我試過了,它似乎工作得很好,看看你自己:https://www.youtube.com/watch?v=g7qQJnMxubU&feature=youtu.be 我在視頻中使用的工具是用於Xamarin的sharpie的包裝.iOS綁定 –

+1

@AlexSorokoletov我甚至無法表達我對你回答我的感激之情。我正在使用你的工具,它的工作非常完美,它給我的眼睛帶來了一滴眼淚,哈哈!如果有什麼地方我可以捐給你,請讓我知道,如果你添加這個答案我肯定會接受。一百萬次,謝謝! – sbonkosky

回答

1

我很快檢查了您提到的LMGaugeView窗格。原來,你必須擁有最新的XCode和Sharpie(3.4是當前版本)。

您可以通過運行sharpie更新來更新sharpie。然後你可以生成一個綁定。

我試過,似乎工作得很好,看到自己:youtube.com/watch?v=g7qQJnMxubU&feature=youtu.be

無恥插件 - 工具,我在影片中使用是記號筆我用Xamarin.iOS綁定的包裝 - objc-automatic