cArray unter MacOSX

  • cArray unter MacOSX

    Hi,

    ich bin im moment dabei ein Programm von mir von Windows nach MacOSX zu portieren..

    Klappt alles soweit wunderbar, nur.. ich verwende u.A. einen Array vom typ CArray (definiert in afxtempl.h).

    Gibt es etwas ähnliches unter MacOSX?
    Die Header datei "afxtempl.h" gibt es zumindest nicht..

    Au'revoir,
    Aya
  • Tja, das ganze gehört zu den Microsoft Foundation Classes, und steht somit nur unter Windows zur Verfügung. Dir wird nichts anderes übrig bleiben, als diese Klasse durch etwas anderes zu ersetzen. Alternativ kannst du natürlich auch eine eigene, kompatible CArray-Klasse schreiben, die du dann nur in der Mac-Version einbindest.
  • Wenn das Template CArray in dem Code sehr viel benutzt wird, könnte sich auch eine Portierung von den Template-Klassen (evtl. auch CString) nach "Standard"-C++ lohnen. Das habe ich auch mal gemacht und es war gar nicht so aufwendig (die Klassen CList<> und CArray<> sind ja recht übersichtlich).
    Du kannst das ganze auch unter MSDev vorbereiten, in dem du ein Projekt für eine C++-Konsolenprogramm "ohne alles" (ohne MFC-Support) anlegst, die Header-Dateien für die Templates in das Projekt hineinkopierst und dann peu-à-peu die Klassen kompilierfähig machst. Das Ergebnis sollte auch unter gcc laufen (so habe ich es damals mit CList, CArray und CString gemacht).

    Viel Spaß,
    Tjark ;)
  • Hi,

    mhh... über portierung hatte ich auchschon nachgedacht... nur hab ehrlichgesagt keine wirkliche idee wie...

    Soll ich einfach die header dateien mit auf den Mac kopieren und dann da so lange fehler ausbessern etc bis es irgendwann kompiliert??? *guckt unsicher*

    Weil, wenn ich unter Windows in einem Nicht-MFC-Konseolenprogramm einfach die afxtempl.h einbinde kann ich den cArray auch problemlos verwenden...

    Magst du mir das ganze kurz ein wenig genauer erklären??? :)

    Au'revoir,
    Aya~

    PS: Oder... magst du mir evtl sogar deine portierten header geben die du mal gemacht hast??? *schaut lieb*

  • Soll ich einfach die header dateien mit auf den Mac kopieren und dann da so lange fehler ausbessern etc bis es irgendwann kompiliert??? *guckt unsicher*

    Im Prinzip, ja ;)
    Ich würde damit anfangen, die reine Klassen-Definition von z.B. CArray in eine neue Header-Datei zu kopieren (z.B. CArray_T.h) und dann alles hinzu zu kopieren, was noch so benötigt wird (also die ganzen Template-Funktionen wie "ConstructElements", usw.), bis es kompiliert.
    Du musst dabei "straight forward" denken ;)
    Wie gesagt: Ist vielleicht einfach, das auf einer Windows-Kiste zu tun, da du dort ja bestimmt alle MFC-Sourcen hast.


    Weil, wenn ich unter Windows in einem Nicht-MFC-Konseolenprogramm einfach die afxtempl.h einbinde kann ich den cArray auch problemlos verwenden...

    Ja, stimmt, aber die inkludieren noch ein paar weitere Dateien, die du auf dem Mac (normalerweise) nicht hast.
    Das betrifft insbesonder die Defines, die die Windows-Typen (INT, UINT, TCHAR, ...) mittels #define definieren. Diese benötigten Typ-Defines (sind ja durch das #define keine neuen Typen im C-Sinne) musst du ebenfalls aus den entsprechenden Headern herauskopieren (oder eben alle "INT"s auf "int" ändern...).

    PS: Oder... magst du mir evtl sogar deine portierten header geben die du mal gemacht hast??? *schaut lieb*

    Hatte schon nach meinem letzten Post danach gesucht, aber leider habe ich die Quellen nicht mehr :(

    PS: Wenn ich mich recht entsinne, war es am aufwendigsten, CString zum Laufen zu kriegen, weil dort noch einige Win-API-Funktion wie "AtomicIncrement" benutzt werden (ich weiss nicht, ob CString in deinem Programm viel benutzt wird).
  • Hab's doch noch wiedergefunden!

    Allerdings nur CList, CString und CPtrList - nicht CArray.

    Zu den einzelnen Klassen gibt's jeweils ein Konsolenprogramm als MSDev 4.2-Projekt. Die Klassen liefen dann aber auch ohne Modifikationen unterm gcc (unter Solaris).

    Download hier (93kB).

    Ist schon lustig, MFC-Quellen mit Developer Studio-Projekten in einem Mac-Forum zu posten...