代码之家  ›  专栏  ›  技术社区  ›  Michael Aaron Safyan

Windows上有很多“不兼容的签名”错误,但Mac OS X上没有flex 4 gumbo

  •  0
  • Michael Aaron Safyan  · 技术社区  · 16 年前

    我有一个纯操作脚本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;
    }
    

    注意:以上代码是我的解决方案的一部分 How do I make an Action Script 3 class, used in two SWF files, resolve to the same class when one SWF dynamically loads the other?

    2 回复  |  直到 16 年前
        1
  •  1
  •   Michael Aaron Safyan    16 年前

    你确定它也在Mac OS X上编译吗?如果您最近更改了构建脚本,但使用的是“增量”编译器选项,那么它可能仅仅因为缓存的构建而在Mac上成功构建。尝试删除任何*.cache文件并在Mac上重新生成,以查看是否出现相同的错误。

    一种可以得到奇怪的“不兼容签名”错误的方法是将输出目录放在库路径中;例如,如果将一个*.swc文件输出到$(mainfolder)/lib中,并且库路径中还列出了$(mainfolder)/lib。我怀疑这样做的原因是,最初,代码中的接口将被使用,但是在构建的中途,将使用(不兼容的)编译接口。

        2
  •  0
  •   back2dos    16 年前

    我看不出有什么问题…信号完全兼容…在我的机器上编译得很好,使用Gumbo for WinXP…除非是公开的 功能 输入…和 ExportX 未知…如果他试图手动编译,会发生什么?我不认为错误来自Cygwin或Makefile,但现在谁…你可能想用蚂蚁,因为这是跨平台的…阅读更多信息 here (第4页实际上是有趣的地方)

    我想问题出在别的地方…或者在这里发布他的编译输出…

    编辑: 好吧,那么你应该非常肯定地发布他的编译器输出,因为我不理解它是如何无法编译的…

    虽然有一个音符 我现在读了你的笔记,你打算做什么……我认为这行不通,事实上…你会遇到同样的问题,因为你想在两个SWF之间共享一个接口…实现一个接口实际上并不只是意味着你实现了这些方法,而是意味着,traits对象知道它实现了它的接口…所以你会得到同样的错误…

    尔兹

    后台操作系统

    推荐文章