Mich kotzt es an, dass ich mir ein Projekt in den Kopf gesetzt habe, wo ich folgende netten kleinen liebenswerten Schlüsselwörter miteinander verheiraten muss.

-managed
-unmanaged
-Lite-C
-Winapi
-Windows.Forms
-.net
-C/C++
-CLI/C++
-static library
-dynamic library
- Unicode
- Multibyte

Hauptproblem ist, dass ich wohl wegen der /clr Option keine Engine Funktionen in der DLL aufrufen darf. Jedenfalls knallt mir dann Acknex immer gnadenlos.

Also hab ich jetzt ein Doppel Whopper Variableninterface reingebaut. Auf der einen Seite werden Lite-C Datentypen verwendet (lediglich char* statt string* wegen siehe oben), auf der anderen bin ich dann in der C++ Welt.
Dazwischen kopiere und konvertiere ich fröhlich umher, setzte und lösche "Update"-Flags um Datenkonsistenz zu erhalten...
Vermutlich kann man da irgendwas mit dem sog. Marshalling drehen, aber.... wleehhhhhhh

Aber schön... nein das ist nicht schön.

Also: Wenn ihr Acknex mit Windows.Forms benutzen wollt... dann nehmt den C# Wrapper und verzichtet auf Lite-C.
Den anderen Weg, Windows.Forms in eine C++ DLL zu pferchen, kann ich nicht empfehlen - außer man will sehr viel dazulernen.
Natürlich wollte ich dann an mein Windows.Forms Projekt noch eine statische in C++ geschriebene Lib linken... auch das hat nicht sofort funktioniert - nach Preprozessor Analyse hab ich dann nach Ewigkeiten rausgefunden, dass sich die Lib weigert, Unicode zu verwenden und der Linker deshalb Probleme beim Strukturmapping bekommt....

Insofern hats wohl nicht geschadet laugh
So richtig sauber toll schön objektorientiert programmieren kann ich noch immer nicht - auch dadurch bedingt dass ich auf Arbeit ausschließlich prozedural codiere und mir ein Umdenken entsprechend schwer fällt.
Außerdem würde ich dann eine aufgeräumtere Sprache als C++ bzw. CLI nehmen. Da gibt es unglaublich hässliche Sachen - und ich brauche sie irgendwie andauernd.


Lasst die Finger davon!
Ihr seid schneller, wenn ihr das Menü per Winapi direkt in Lite-C zusammenbaut - auch wenn das mal wieder äußerst gichtelig und nervenaufreibend ist, da der visuelle Editor fehlt.