Frage

Ich habe ein reines Action Script 3-Projekt, das ich mit dem Flex 4 SDK bin kompilieren. Ich habe ein Standard-Makefiles, die automatisch aufrufen compc, mxmlc und ASDoc als angemessen. Das Projekt wird kompiliert sauber ohne Fehler oder Warnungen auf meinem Mac OS X 10.4 + Computer; jedoch, wenn es mit einem Kollegen der Entwicklung unter Windows XP teilen (mit Cygwin installiert ist), bekommt er eine sehr große Liste der „unvereinbar Signatur“ Fehler. Warum wird er diese Fehler zu bekommen? Die Unterschriften werden nicht unvereinbar sein.

Hinweis: Die Signaturen in Frage sind "Original" und "Export", so benutzte:

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;
}

Hinweis: Der obige Code Teil meiner Lösung ist auf Wie kann ich ein Action Script 3-Klasse machen, in zwei SWF-Dateien verwendet, zu der gleichen Klasse lösen, wenn eine SWF dynamisch die andere lädt?

War es hilfreich?

Lösung

Sind Sie sicher, dass es kompiliert auch auf Mac OS X? Wenn Sie vor kurzem Ihre Build-Skripte geändert, aber Sie werden mit der „incremental“ Compiler-Option, könnte es erfolgreich auf Ihrem Mac sein Aufbau einfach wegen der im Cache zu bauen. Versuchen Sie, * .cache Dateien zu entfernen und neu erstellen auf Ihrem Mac, um zu sehen, ob Sie die gleichen Fehler erhalten.

Eine Möglichkeit, dass Sie seltsame „inkompatibel Signatur“ Fehler bekommen können, ist, wenn Sie Ihr Ausgabeverzeichnis in der Bibliothek Pfad platzieren; wenn Sie in den Bibliothekspfad aufgelistet $ (Hauptordner) / lib sind beispielsweise die Ausgabe eine * .swc Datei in $ (Hauptordner) / lib und Sie auch. Ich vermute, dass der Grund dafür ist, dass zunächst werden die Schnittstellen in Ihrem Code verwendet werden, aber auf halbem Weg durch den Build, die (nicht kompatibel) kompilierte Schnittstellen verwendet werden.

Andere Tipps

Ich sehe kein Problem ... sigs vollständig kompatibel ist ... kompiliert auf meiner Maschine in Ordnung, mit Gumbo für WinXP ... außer es öffentlich sein sollte Funktion ImportX ... und ExportX ist nicht bekannt ..., was passiert, wenn er versucht, die manuell zu kompilieren? nicht, dass ich denken würde, dass Fehler von Cygwin oder die Make-Datei kommen, aber wer nows ... Sie könnten allerdings Verwendung ANT will, da diese Cross-Plattform ist ... mehr lesen hier (Seite 4, wo es erhalten interessant in der Tat) ...

Ich denke, das Problem an anderer Stelle ist ... oder vielleicht seine Kompilierung Ausgabe hier posten ...

Bearbeiten ok, dann sollten Sie auf jeden Fall seine Compiler Ausgabe veröffentlichen, weil ich verstehe nicht, wie das nicht kompiliert werden kann ...

eine Note obwohl : Ich lese jetzt Ihre Notiz, auf das, was Sie zu tun beabsichtigen, ... ich denke, es wird nicht funktionieren, in der Tat ... Sie werden das gleiche Problem, weil Sie eine Schnittstelle über 2 swfs ... Implementierung einer Schnittstelle nicht teilen wollen eigentlich nicht einfach bedeuten Sie die Methoden implementieren, aber es bedeutet, dass die Traitsobjekt weiß, dass es seine Schnittstelle implementiert ..., so dass Sie die gleichen Fehler erhalten. ..

greetz

back2dos

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top