[英]Lots of “incompatible signature” errors on Windows but not on Mac OS X with Flex 4 Gumbo
我有一個純Action Script 3項目,正在使用Flex 4 SDK進行編譯。 我有一個標准的Makefile,它會根據需要自動調用compc,mxmlc和asdoc。 我的Mac OS X 10.4+計算機上的項目正在干凈地編譯,沒有錯誤或警告。 但是,當與在Windows XP(安裝了Cygwin)上開發的同事共享該文件時,他會收到很多“不兼容的簽名”錯誤列表。 他為什么會得到這些錯誤? 簽名似乎不兼容。
注意:有問題的簽名是“原始”和“出口”,使用方式如下:
public interface AbstractX { function original() : Object; function export() : Object }
public class ImportX implements AbstractX { public ImportX(obj : Object) { _loadedobj = obj; _exportobj = obj.export(); } public static function wrap(obj : Object) : AbstractX { var result : AbstractX = null; if ( obj != null ){ if ( obj is AbstractX ){ result = obj as AbstractX; }else if ( obj.original() is AbstractX ){ result = obj.original() as AbstractX; }else{ result = new ImportX(obj); } } return result; } public function original() : Object { return _loadedobj; } public function export() : Object { return _exportobj; } private var _loadedobj : Object = null; private var _exportobj : Object = null; }
public class X implements AbstractX { public function X() : void { //... } public function original() : Object { return this; } public function export() : Object { if ( ! _export ){ _export = new ExportX(this); } return _export; } private var _export : Object = null; }
注意:上面的代碼是我的解決方案的一部分,該解決方案是當一個SWF動態加載另一個SWF文件時,如何使兩個SWF文件中使用的Action Script 3類解析為同一類?
您確定它也可以在Mac OS X上編譯嗎? 如果您最近更改了構建腳本,但使用的是“增量”編譯器選項,則可能只是因為緩存了構建,所以它已在Mac上成功構建。 嘗試刪除所有* .cache文件並在Mac上重建,看看是否出現相同的錯誤。
可能會出現奇怪的“不兼容簽名”錯誤的一種方法是,將輸出目錄放置在庫路徑中。 例如,如果要將* .swc文件輸出到$(MAINFOLDER)/ lib中,並且庫路徑中也列出了$(MAINFOLDER)/ lib。 我懷疑這是因為,最初將使用代碼中的接口,但是在構建過程的一半,將使用(不兼容的)編譯接口。
我沒有發現任何問題...信號完全兼容...在我的機器上編譯良好,並且適用於WinXP的gumbo ...除非它應該是公共功能 ImportX ...並且ExportX
是未知的...發生了什么,如果他嘗試手動編譯? 並不是說我會認為錯誤是由於cygwin或makefile引起的,但是現在是誰...您可能想要使用ANT,因為這是跨平台的... 在這里閱讀更多(實際上,第4頁是有趣的)。 ..
我認為問題出在其他地方...或者在這里發布他的編譯輸出...
編輯:好的,那么你絕對應該發布他的編譯器輸出,因為我不明白那怎么不能編譯...
一條便條紙 :我現在就讀您的便條紙,關於您打算做的事情……我認為這實際上是行不通的……您會遇到同樣的問題,因為您要在2個瑞士法郎之間共享一個接口...實現一個接口實際上並不僅僅意味着您實現了這些方法,還意味着traits對象知道它實現了其接口...因此您將得到相同的錯誤...
格里茨
back2dos
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.