C++ Programm als .exe veröffentlichen (ohne das Bibliotheken o.ä. erforderlich sind)

A

allst4r

Gast
Hallo,

vor kurzem habe ich ich mit dem Versuch begonnen mir selber C++ beizubringen. Nachdem ich dann ein bisschen gelesen hatte ist es mir auch gelungen mein erstes, mehr oder weniger tolles Programm zu schreiben.
Leider habe ich es bisher nicht geschafft (auch nach ausgibiger Google-Recherche) mein Programm so zu exportieren(?), also eine .exe zu erstellen, dass andere Leute es auf ihrem PC nutzen können ohne cygwin installiert zu haben. (Der Versuch das Programm zu starten schlägt fehl, da die "cygwin1.dll" fehlt)

Als IDE nutze ich Netbeans 6.9.1 zusammen mit cygwin.

Gibt es eine Möglichkeit (evtl auch mit Hilfe eines anderen Programms) dieses Problem zu lösen?
 
Danke für die schnellen Antworten.

Die Idee mit dem selbst extrahierenden Archiv is auf jeden Fall schonmal ein gutes Workaround, danke.


Ich hätte als alternative IDE auch MS Visual Studio (danke an msdnaa für die ultimate edition) zur Verfügung. Würde sich die im Thread erwähnte Idee damit umsetzen lassen?

mfg

/e

Eine Frage ist mir grade noch eingefallen: Ist es eigentlich lizenzrechtlich ok wenn ich die cygwin1.dll einfach mit einem Archiv veröffentliche bzw weiter gebe?
 
Zuletzt bearbeitet von einem Moderator:
"Eine Frage ist mir grade noch eingefallen: Ist es eigentlich lizenzrechtlich ok wenn ich die cygwin1.dll einfach mit einem Archiv veröffentliche bzw weiter gebe?"

siehe 2. Beitrag, da stehts beschrieben :)

"No. If your program uses the Cygwin API, then your executable cannot run without cygwin1.dll. In particular, it is not possible to statically link with a Cygwin library to obtain an independent, self-contained executable.

If this is an issue because you intend to distribute your Cygwin application, then you had better read and understand http://cygwin.com/licensing.html, which explains the licensing options. Unless you purchase a special commercial license from Red Hat, then your Cygwin application must be Open Source."
 
Nimm MS VS und dann bei allen Bibliotheken die du nutzt nicht die Dynamischen (*.dll) sondern die Statischen. Dann hast du alles in der .exe und brauchst keine weiteren Dateien (sofern du nicht externe Grafiken, etc. hast).

Die Ultimate Version brauchst du übrigens nur, wenn du 64bit Programme erstellen willst bzw. die MFC benutzen willst. ansonnsten reicht auch die Express Edition die kostenlos bei MS Herunterladbar ist. Zumindest war es so bei 2008, habe 2010 noch nicht getestet.
 
Und wu kann ich bei MS VS einstellen ob dynamische oder statische Bibliotheken benutzt werden sollen?
Probier nun schon ne weile rum aber konnte keine entsprechende Einstellungsmöglichkeit finden..
 
Hauptsächlich meine ich externe Bibliotheken, zB. wxWidgets, SQL und so weiter, dass du hier eben die statischen nimmst (sofern du überhaupt welche nimmst). Projekteigenschaften kann man einstellen in dem du rechts aufs Projekt klickst und dort auf Eigenschaften. Habe aber gerade kein VS installiert und VS 2010 auch noch nicht getestet, weiß also nicht in wie weit es dort anders ist.
 
@badday: Ja richtig, jez weiß ich endlich auch, wozu dieser MinGW gut ist^^

Ob die exe auch auf anderen Rechnern läuft, z.b. auf den Linux- Rechnern an der Uni, hab ich aber noch nich ausprobiert.
 
Leider ist immer noch nicht geklärt mit welchem Compiler sich ne .exe erstellen lässt, die auch auch anderen (Windows) PCs läuft, ohne dass extra Blibliotheken installiert werden müssen..
 
allst4r schrieb:
Leider ist immer noch nicht geklärt mit welchem Compiler sich ne .exe erstellen lässt, die auch auch anderen (Windows) PCs läuft, ohne dass extra Blibliotheken installiert werden müssen..
Mit allem was ich kenne ausser eben Cygwin, sofern man keine dynamischen Bibliotheken nimmt.
 
Eine .exe erstellt eigentlich jeder compiler/linker. Problem ist eher, dass Cygwin gelinkt wird. Ist Cygwin nicht eine Port-API um Linux Programme unter Windoof zum laufen zu bekommen? Wenn du die nicht brauchst, müsstest du evtl. in deiner IDE das linken von Cygwin deaktivieren.

Empfehlung: Visual Studio (Express). Statisches Linken der Bibliotheken aktivieren (in der IDE Rechtsklick aufs Projekt -> Eigenschaften -> Codengenerierung ö.ä.)
 
Zurück
Oben