Klaus Mock: Fragen zu C++

Beitrag lesen

Hallo,

die cygwin1.dll muss im selben Verzeichnis liegen, wie Deine .exe.
Ich habs im Winnt/system32 versucht und das hat auch funktioniert, denn ich denke da gehören DLL´s hin, oder?

Eigentlich muß die DLL nur in einem Verzeichnis sein, das in der Umgebungsvaribale PATH angegeben wurde. Wenn Du mit cyqwin arbeitest sollest halt die entsprechenden Verzeichnisse in PATH eintragen. dann brauchst Du nichts herumkopieren. (die BAtchdatei, die Deine Cygwin-Umgebung startet macht auch nichts anderes)

Aber das ist es eigentlich nicht was ich will. Ich habe ja lediglich folgendes Script:

#include <iostream.h>
int main()
{
cout << "Hello World!" << endl;
return 0;
}

Äh, Quellcode wolltest Du sagen;-)

Wobei selbst das - wieso muß da "endl" ans Ende? Heißt vermutlich "endline" , aber dafür gibt es doch "\n"?! "endl" muß ich ja verwenden, sonst geht es nicht, aber ich verstehe nicht so ganz wieso, und wieso es dann noch "\n" gibt?!

muß nicht, außer Du willst einen Zeilenumbruch. Den Fehler, den Du weiter unten angesprochen hast, hast DU gemacht, weil Du nur endl entfernt hast und nicht das << davor. Dadurch hast DU einen syntaktischen Fehler produziert.

Genauso wenig verstehe ich warum das ganze in einer Funktion stehen muß, und auch warum diese einen Rückgabewert braucht, denn wenn ich den von 0 auf 1 verändere funktioniert es weiter!?

Beim Linken wird die Object-Datei Deines Programmes mit einem Startcode, der immer gleich ist, verbunden. Der Startcode wird ausgeführt, wenn Du das Programm startest, und dann führt dieser Code die Funktion main() aus. Es ist quasi Dein Stichwort bzw. Dein vorgegebener EInsprungspunkt. Reine Konventionssache, die man wissen muß. Wenn jemand lustig gewesen wäre, könnte diese Funktion auch dldkfkdskjhkdshkfshdak() heißen, allerdinsg bezweifle ich, ob das jemand ohne Cut&Paste verwenden würde;-)

So wie ich das sehe, führt der Startcode auch einige Funktionen aus der von Dir angesprochenen DLL aus, wodurhc sie unentbehrlich ist. Windows benutzt einen anderen Startcode, aber eben auch einen.

Was heißt das denn genau die "cygwin-API nutzen"? Für das bekloppte Script oben, wie kann es sein dass ich da ne eigene DLL brauche?

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.

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

Nein, nur anders.

Das ist mir total egal! Mit Lizenzen etc. kann ich mich später auseinandersetzen, ich würde aber erstmal gerne verstehen wie das ganze funktioniert ;-), vor allem wie ich möglichst einfach ein C++ Programm schreibe, das ohne zusätzliche Voraussetzungen auf einem normalen Windows-Rechner läuft. In meinem Script greife ich ja auf eine Header-Datei zurück(iostream.h), die wird dann beim Kompilieren mit eingearbeitet, so dass Windows damit umgehen kann, oder? Ist das dann abhängig von der DLL?

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.

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.

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.

Grüße
  Klaus