Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Allgemeines (OffTopic) » C vs C++

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 < [ 3 ] [ 4 ]
010
27.07.2004, 13:23 Uhr
virtual
Sexiest Bit alive
(Operator)


@Hans
Ne, ABI meint Application Binary Interface.
Das ist nicht standardisiert. zB gabs beim gcc mehrmals Brüche und probleme in der Abwärtskompatibiltät, zuletzt beim Umstieg auf 3.2....
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
27.07.2004, 14:06 Uhr
(un)wissender
Niveauwart


Genau!
Das Hauptproblem ist, dass z.B. eine dll compiliert mit VC++ nicht generell von einem gnu C++ compiler benutzt werden kann und umgekehrt. Sehr ärgerlich, C++ sollte C++ sein!
Das liegt an den unterschiedlichen namemangeling-Verfahren, ev. Aufrufkonventionen, Exception/RTTI-Handling, Behandlung von virtuellen Funktionen, etc.
Zum ******!
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
27.07.2004, 14:20 Uhr
Hans
Library Walker
(Operator)


Hi,

, davon hab ich bisher noch nichts gehört. Das heisst also, wenn ich mit mit VC++ eine dll baue, und sie mit gcc unter Windows verwenden will, kann es sein, das sie nicht funktioniert, richtig? - (Das selbe kann mir passieren, wenn ich eine dll, oder auch eine Objektdatei (*.obj unter windoof) mit einem Borlandcompiler erstelle, und sie später mit dem linker eines anderen Herstellers in ein Programm einbinden will.)
Ist aber eigenartig. Ich hab gestern erst die "TIS Portable Formats Specification, Version 1.1" entdeckt, wo doch eigentlich sowas definiert sein sollte, wenn ich es beim überfliegen richtig verstanden habe. Oder ist das im Falle Windows wieder das typische Mikro$oft phänomen, das die ihre eigenen Standards haben, und sich um andere nur soweit scheren, wie unbedingt nötig? - Oder liegt das Problem noch wo anders?

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 27.07.2004 um 14:25 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
27.07.2004, 14:24 Uhr
(un)wissender
Niveauwart


Microsoft hat da nicht Schuld, genauswenig wie die gnu-Leute! Das ABI wurde schlicht nicht standardisiert und jeder Compiler kann tun und lassen was er will(und tut das generell auch), in dieser Hinsicht.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
27.07.2004, 14:28 Uhr
Hans
Library Walker
(Operator)


In was für Büchern, oder onlinequellen kann man sich darüber schlau machen? - Das interessiert mich jetzt doch etwas mehr.

Hans

P.S. @(un)wissender : in diesem Fall trifft Dein Nick wohl mehr auf mich zu, als auf Dich!
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 27.07.2004 um 14:30 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
27.07.2004, 14:51 Uhr
Bruder Leif
dances with systems
(Operator)


Moin!

Schau mal unter www.kegel.com/mangle.html, eine kleine Einführung in das Thema...
Das Name Mangling ist übrigens auch der Grund, warum man beim Schreiben von Windows-DLLs jede Funktion in mit extern "C" verpacken sollte. Dadurch unterläßt der Compiler das Name Mangling, und die DLL kann auch von anderen Compilern aus angesprochen werden. Dummerweise klappt das mit Klassen natürlich nicht
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.

Dieser Post wurde am 27.07.2004 um 14:53 Uhr von Bruder Leif editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
27.07.2004, 16:11 Uhr
Pablo
Supertux
(Operator)



Zitat von (un)wissender:
Genau!
Das Hauptproblem ist, dass z.B. eine dll compiliert mit VC++ nicht generell von einem gnu C++ compiler benutzt werden kann und umgekehrt. Sehr ärgerlich, C++ sollte C++ sein!
Das liegt an den unterschiedlichen namemangeling-Verfahren, ev. Aufrufkonventionen, Exception/RTTI-Handling, Behandlung von virtuellen Funktionen, etc.
Zum ******!


Und was ist mit der WinAPI? Das gcc für Windows kann das doch erkennen, oder? Oder ist das Problem nur bei den Binaries?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
27.07.2004, 16:28 Uhr
0xdeadbeef
Gott
(Operator)


Ich fuer meinen Teil bin ziemlich grosser C++-Fan (und ich hasse es, wenn ich an einem Rechner mit en_US-Tastaturbelegung sitze...waaaah!), weil die Sprache einfach viel mehr Moeglichkeiten bietet. Ich spreche dabei auch von Klassen, meine aber im Wesentlichen das generische Paradigma, also templates.

Dazu kommt, dass gerade bei grossen Projekten, und wenn man die Sprache kann, C++-Code sowohl einfacher zu lesen als auch zu schreiben ist (eine gewisse Sauberkeit des Codes vorausgesetzt). Und dass es bei C weniger pitfalls gaebe, waere mir neu - es gibt eigentlich im Wesentlichen weniger Moeglichkeiten, um sie herum zu manoevrieren (bzw. es ist komplizierter/aufwaendiger). Der einzige Grund fuer mich, ueberhaupt noch C zu benutzen, ist das nicht standardisierte C++-ABI, und das ist auch eher selten von Bedeutung. Oh, und das mit der laengeren Compilezeit ist ein Argument - vor allem, wenn man exzessiv templates benutzt, wie ich das gerne tue...
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
27.07.2004, 16:30 Uhr
virtual
Sexiest Bit alive
(Operator)


WIndows API ist reines C, kein C++, deshalb garnicht das Problem. Das Problem ist ganz einfach zB folgender C++ Code:

C++:
class X
{
public:
     virtual void irgendwas();
};


Angenommen, du willst diese Klasse in einer DLL verfügbar machen (oder in einem SharedObjekt unter UNIX/Linux), dann geht das alles prinzipiell. Es ist aber so, daß man diese DLL/SharedObjekt nur mit einem Programm nutzen kann, welches das gleich ABI hat, was im zweifel heisst, mit dem Gleichen Compiler, möglicherweise sogar gleichen Compilerversion compiliert wurde.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
019
27.07.2004, 16:30 Uhr
(un)wissender
Niveauwart


@Pablo
Die Winapi ist in c, und c hat ein std. ABI.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 < [ 3 ] [ 4 ]     [ Allgemeines (OffTopic) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: