c++ compilieren??
tomstig 18.10.2004 - 23:52 1206 22
Ringding
Pilot
|
VC++ 6 hat bekanntlich eine sehr schwache Template-Implementierung (member templates fehlen z.B. völlig). Kein Wunder, der ist ja auch schon sehr angegraut. Dafür ist es mir aber im Gegensatz zum Borland-Compiler noch nie gelungen, dass er mir falschen Code erzeugt. Das neue VC++ ist hingegen ein ausgezeichneter C++-Compiler. bin VC++ gegenüber sehr negativ eingestellt da es einfach vor keinen gröberen Fehlern bewahrt Kann ich nicht nachvollziehen. VC++ hat sehr gute Debughilfen dabei, die jede Menge Blödsinn aufspüren können.
|
ica
hmm
|
besser wäre auch wenn du <iostream> inkludierst
|
d3ft0n3
grinder
|
eine weitere freeware-alterative wäre der DevC-Compiler... http://www.bloodshed.net/hab ich selbst einige Zeit lang verwendet, muss aber zugeben, dass ich noch net wirklich viel anspruchsvolles programmiert hab. jetzt benutz ich visual studio .net, ist eigentlich ziemlich praktisch wenn man sich mal an die oberfläche gewöhnt hat
|
DKCH
...
|
naja, dev-c++ benutzt auch den gcc. ist aber als IDE ganz nett, für so kleine übungs-sachen.
|
mat
AdministratorLegends never die
|
gibt es eigentlich schon einen compiler der dllimport/export mit templates kann?
ich hab mal gehört gcc kanns, danach allerdings gleich wieder: "das bräuchte eine umstrukturierung des c++ models". nicht das es so wichtig wäre, die alternative ist ja die templateheader als intermediate code zu benutzen.
|
Ringding
Pilot
|
Das kann nicht gehen. Man kann die templates schon für ein paar wohlbekannte Typen explizit instantiieren und das in die DLL schmeißen (so wird's in der MFC gemacht), aber um eine template-DLL einfach so verwenden zu können, bräuchte man irgendeine Art von Bytecode und/oder Compiler zur Laufzeit.
|
that
ModeratorHoffnungsloser Optimist
|
C++ verträgt sich überhaupt schlecht mit DLLs. Je nach Plattform hat man eine schöne Auswahl der folgenden Probleme:
- Übergabe von STL-Objekten (z.B. ein harmloser string) über die DLL-Grenze führt zu bösem Crash wegen unterschiedlichen Heaps (MSVC mit static Runtime) - Es ist ein Glücksfall, wenn Konstruktoren und Destruktoren globaler Objekte in einer DLL korrekt behandelt werden. - Ein funktionierendes "throw" über DLL-Grenzen ist auch ein Glücksfall. - Wenn man bei Codeänderungen nicht alle betroffenen Binaries compiliert und ausliefert (oder der User nicht alle installiert), kommt es zu schwer nachvollziehbaren Crashes. - Mischen von C++-DLLs, die mit unterschiedlichen Compilerversionen oder Compilern unterschiedlicher Hersteller erstellt wurden, ist ein Glücksspiel.
Gegen C++ innerhalb einer DLL spricht nichts, aber an DLL-Grenzen verwende ich ausschließlich Interfaces (ABCs) - das funktioniert zum Glück auf allen mir bekannten Plattformen.
|
Ringding
Pilot
|
RTTI müsste dann wohl auch Probleme machen, hab's noch nie ausprobiert.
|