Axel Richter: Fragen zu C++

Beitrag lesen

Hallo!

Du brauchst ja für ein PHP-Script auch einiges, wie z.B. den PHP-Interpreter. Ähnlich kannst Du das auch hier sehen, aber wirklich nur ähnlich.
Ja, aber ih dachte bei C++ sei das tolle das man gerade nicht einen eigenen interpreter... braucht, sondern das alles was man braucht beim OS dabei ist, also ich kompiliere den obigen "Quellcode" und erstelle so eine text.exe, und die test.exe holt sich das was sie zum laufen braucht aus den 100en DLLs die Windows bereits mitliefert, so habe ich mir das vorgestellt.

Ja, der Nachteil ist aber, dass ein so kompiliertes Programm dann _nur_ auf dem einen System lauffähig ist. CygWin will aber gerade eine UNIX-Umgebung auf Windows-Systemen realisieren. Du willst nun aber ein natives Windows(eigentlich DOS)-Programm mit CygWin compilieren. _Hier_ liegt der Widerspruch.

Vermutlich sind die Standard-Windows DLLs doch mächtig genug um "Hello World" über die Standardausgabe auszugeben, oder?

Nein, nur anders.
Du meinst ich kann nichts über die Standardausgabe ausgeben ohne eine eigene DLL zu verwenden, jetzt mal unabhängig von cygwin?

Doch, schon. So:

/* hello.c -- hello world example. */
  #include <stdio.h>
  int main () {
      printf ("Hello world!\n");
      return 0;
  }

$ gcc -c -mno-cygwin hello.c
  $ gcc -o hello -mno-cygwin hello.o

$ ./hello
  Hello world!

To see what DLLs it's using:

$ objdump -p hello.exe | grep "DLL Name"
        DLL Name: crtdll.dll
        DLL Name: kernel32.dll

Aber Dein "Hello World" will ja Streams nutzen. Da ist schon eine System-spezifische Bibliothek nötig.
http://www.nanotech.wisc.edu/~khan/software/gnu-win32/mno-cygwin-howto.txt

Wenn Du einen freien C-Compiler ganz ohne cygwin suchst, dnan kannst Du auch den von Borland verwenden http://www.borland.com/products/downloads/download_cbuilder.html oder Du siehst Dich einmal bei http://www.c-plusplus.de/body_compiler.htm um.

Jep.
oder: http://www.mingw.org/

Cygwin stellt einen Sonderfall dar, weil es ja das GNU/Linux Umfeld unter Windows nachbildet, um all die tollen GNU-Tools auch unter diesem OS zur VErfügung stellen zu können.
Das ist gut, aber in diesem Moment eigentlich gar nicht das was ich will. Wenn ich denselben Code mit dem Borland-Compiler kompiliere, brauche ich dann keine extra dll? Und die header-Datei kennen auch andere Compiler?

Doch, auch der Borland-Compiler linkt die Stream-Ausgabe gegen eine DLL, aber gegen die von Windows halt, weil er extra für Windows gebaut ist. CygWin will sie aber gegen ein so(shared objekt) linken, welches aus Unix kommt und in der cygwin1.dll an Windows angepasst ist.

Wie ist das denn unter Unix? Vermutlich gibt es da doch keine DLLs, oder?
Doch, nur heißen die da nicht so. Oder eigentlich doch so nur halt nicht dll äh naja sie heißen eben so, also nicht dll sondern so also...
huch, wie kommen ich da nur wieder raus....
Ach ja, sie heißen dann Shared Object oder kurz 'so' und besitzen im Dateinamen meist auch diese zwei Buchstaben als Kennzeichnung, wobei das ja nicht zwingend erforderlich ist.

Ah ja, Danke Dir :)

Viele Grüße
Andreas

Gruß

Axel