ObjectARX - Headerfile Probleme



  • EDIT-----SORRY PROBLEM HAT SICH ERLEDIGT------ES WAR NOCH IN EINEM BEREICH EINE #DEFINE ANWEISUNG VON MEINEN ERSTEN GEHVERSUCHEN, DIE DAS GANZE GESTÖRT HABEN!!!!!!!!!! ENTSCHULDIGUNG UND DANKE --------------EDIT ENDE

    Hallo liebe Community,

    ich weiß, dass ich hier etwas falsch bin. Es geht um ObjectARX - eine Bibliothek für AutoCAD zu entwickeln. Da man im Entwicklerforum von ACAD mit Anfängern sehr hochnäsig umgeht: "Du hast die Dokumentation und das Internet, das muss reichen" (frei von Englisch nach Deutsch übersetzt) - wende ich mich an Euch.

    Es geht um folgendes:

    Ich habe ein Projekt (dieses Jahr, völlig ahnungslos von ObjectARX Entwicklung, übernommen), welches für AutoCAD 2007 entwickelt wurde und jetzt für AutoCAD 2015 verfügbar gemacht werden soll. Es gibt einen Befehl in dem Code, welcher leider nicht mehr so funktioniert und umprogrammiert werden muss.

    Der ursprüngliche Befehl hieß: acedCommand und man muss jetzt eine der beiden Varianten acedCommandS oder acedCommandC verwenden - je nachdem, ob man auf Benutzeraktionen wartet oder nicht.

    Die Definiton der beiden Funktionen erfolgt in einer Headerdatei namens: "acedCmdNF.h" - welche ich in der "stdafx.h" inkludiert habe.

    Jetzt meckert aber mein Compiler schon an diesem Header rum:

    ACAD_PORT AcApDocument* acedPendingFiberlessDocSwitch();
    
    //
    // acedCommandS:  syntax-compatible replacement of acedCommand,
    //                use for "full commands", not partial ones.
    //                This command essentially begins with its own
    //                private command line processor, initialized at
    //                the "Command:" prompt.   The commands are executed
    //                in the same manner as with acedCommand, except that
    //                when the supplied input has all been executed,
    //                the private command line processor is deleted
    //                and the previous command line processor is unchanged
    //                from when the call is made.   modality and
    //                transparent "builtin" commands may not be nested.
    //
    //
    int             acedCommandS(int rtype, ...);
    

    und

    typedef int (*AcEdCoroutineCallback)(void* pData);
    
    ACAD_PORT int acedCommandC(AcEdCoroutineCallback pCallback,
                               void* pReturnFcnParms,
                               int rtype, ...);
    ACAD_PORT int acedCmdC(AcEdCoroutineCallback pCallback,
                           void* pReturnFcnParms,
                           const struct resbuf *rb);
    

    Er meckert einmal beim acedCommandS:

    C:\ProgramData\ObjectArx\ObjectARX 2015\inc\acedCmdNF.h(50): error C2062: 'int'-Typ unerwartet

    und beim acedCommandC:

    1>C:\ProgramData\ObjectArx\ObjectARX 2015\inc\acedCmdNF.h(152): error C2377: 'AcEdCoroutineCallback': Neudefinition; typedef kann nicht mit einem anderen Symbol überladen werden
    1> C:\ProgramData\ObjectArx\ObjectARX 2015\inc\acedCmdNF.h(147): Siehe Deklaration von 'AcEdCoroutineCallback'
    1>C:\ProgramData\ObjectArx\ObjectARX 2015\inc\acedCmdNF.h(152): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
    1>C:\ProgramData\ObjectArx\ObjectARX 2015\inc\acedCmdNF.h(153): error C2062: 'void'-Typ unerwartet
    1>C:\ProgramData\ObjectArx\ObjectARX 2015\inc\acedCmdNF.h(154): error C2059: Syntaxfehler: ')

    Ich weiß jetzt nicht genau, wie ich es besser beschreiben soll - der acedCommand Befehl ist im Prinzip nichts anderes als eine Methode um im AutoCAD eine unbestimmte Anzahl von Befehlen hintereinander auszuführen. Also bspw.

    acedCommandC(&myCallbackFn1, NULL, RTSTR, _T("Line"),
    RTSTR, _T("0,0"), RTSTR, _T("111,111"), RTNONE);
    

    Der erste Parameter ist die Callback - Funktion (deswegen muss man die Umstellung machen - das gab es früher so nicht) und dann wird der Befehl "Linie" aufgerufen und 2 Punkte von 0,0 nach 111,111 gelegt.

    Ich hoffe es kann mir einer von Euch wenigstens nur einen kleinen Hinweis geben....

    Vielen Dank im Voraus


Anmelden zum Antworten