我試圖通過這個指南走:麻煩的Objective-C庫結合,以C#與目的記號筆
https://developer.xamarin.com/guides/ios/advanced_topics/binding_objective-c/walkthrough/
試圖創建此github上項目綁定:
https://github.com/lminhtm/LMGaugeView
使用Sharpie 3.4。
我遇到了以下問題:
,因爲我建立針對iOS11我無法生成脂肪的二進制與結構
i386 armv7 x86_64 arm64
。我只能生成一個Fat體系結構x86_64
和arm64
,嘗試其他人給我錯誤消息invalid iOS deployment version, iOS 10 is the max deployment target for 32-bit targets
。這是預期的嗎?當我使用Sharpie時,我能夠生成API和Struct文件,但是,這些文件中的每一個都很龐大,結構最終爲24K +行,API 54K +行。我也跟着一個YouTube教程,他得到的輸出大約有200行左右,所以我的這個巨大的事實讓我覺得有些事情正在發生。他的教程不是爲我的同一個Objective-C項目做的,但我甚至嘗試了他所做的一樣,最後得到了相同的結果。
結構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代碼是一個頭文件。我在這裏做錯了什麼?
如果需要,我可以提供更多細節!
你有安裝最新版本的XCode(9)和Sharpie嗎? 我想幫忙,對iOS綁定有一些經驗 –
我很快檢查了您提到的窗格。原來,你必須擁有最新的XCode和Sharpie(3.4是當前版本)。你可以通過運行'sharpie update'來更新sharpie。 然後你可以生成一個綁定。我試過了,它似乎工作得很好,看看你自己:https://www.youtube.com/watch?v=g7qQJnMxubU&feature=youtu.be 我在視頻中使用的工具是用於Xamarin的sharpie的包裝.iOS綁定 –
@AlexSorokoletov我甚至無法表達我對你回答我的感激之情。我正在使用你的工具,它的工作非常完美,它給我的眼睛帶來了一滴眼淚,哈哈!如果有什麼地方我可以捐給你,請讓我知道,如果你添加這個答案我肯定會接受。一百萬次,謝謝! – sbonkosky