Entwickeln unter Windows - Eine Nervenraubende Sache?
-
Frachtkatamaran schrieb:
Ich bin zu blöd? Oder ist das unter Windows wirklich so schlimm?
Es ist nicht wirklich so schlimm. Es ist hauptsächlich anders.
Wenn du "anders" bzw. "ungewohnt" und "schlimm" nicht auseinanderhalten kannst, dann ... tjo ... kann man dir wohl nicht helfen.
-
Frachtkatamaran schrieb:
Unter Linux kann ich mittels pkg-config alle Bibliotheken und Compilerflags einbinden unter Windows scheint es so etwas gar nicht zu geben.
Nope, gibt es nicht.
Frachtkatamaran schrieb:
Es scheint auch keinen Ordner für DLLs zu geben (sowas wie /usr/lib )
http://en.wikipedia.org/wiki/Side-by-side_assembly
Frachtkatamaran schrieb:
Die WinAPI selbst hat einen seltsame Aufbau und die ganzen typdefs Nerven mehr als sie helfen.
Wenn du meinst...
Frachtkatamaran schrieb:
Die ganzen OpenSource Bibliotheken lassen sich, wenn überhaupt nur mit massivem Aufwand bauen oder brechen mit mit seltsamen Fehlermeldungen ab.
Das liegt entweder daran, dass der Windows Support der jeweiligen Bibliotheken eben Müll ist oder du nicht weißt, was du tust...
Frachtkatamaran schrieb:
Die Compiler selbst scheinen total veraltet zu sein. (MSVC unterstützt nur ein Bruchteil der aktuellen C++11 features und der GCC 4.6 (4.7 scheint es keinen vernünftigen zu geben) unterstützt auch weniger Features (STL) als unter Linux. (Das std::thread nicht geht nervt mich ziemlich)
C++ 11 is nocht nicht mal ein Jahr alt. Aber ja, MSVC is im Moment sicherlich nicht ganz vorne dabei, was C++ 11 Support angeht. Ist eben so, wird sich mit der Zeit ändern, wenn du portablen Code schreiben willst, musst du das eben bedenken. Zumindest die Standardlibrary ist allerdings mittlerweile mehr oder weniger komplett (VS 2012).
Frachtkatamaran schrieb:
Es werden doch ständig Programme für Windows geschrieben und benutzt.
Interessant, nicht?
-
Die WinAPI selbst hat einen seltsame Aufbau und die ganzen typdefs Nerven mehr als sie helfen.
Alles Geschmackssache, sagte der Affe, und biss in die Seife.
Die WinAPI mag etwas gewöhnunsbedürftig sein, aber nach einiger Zeit möchte man sie nicht mehr missen.
Aber ich fürchte Konzepte, mit denen man sich nicht beschäftigt hat und welche in Konkurrenz stehen, sind schnell etwas verpönt.
Unter Linux kann ich mittels pkg-config alle Bibliotheken und Compilerflags einbinden unter Windows scheint es so etwas gar nicht zu geben.
Visual Studio ?
Es scheint auch keinen Ordner für DLLs zu geben (sowas wie /usr/lib )
C:\Windows\System32 ? COM-Server ?
Die ganzen OpenSource Bibliotheken lassen sich, wenn überhaupt nur mit massivem Aufwand bauen oder brechen mit mit seltsamen Fehlermeldungen ab.
Kann ich bei boost, QT und wxwidgets nicht bestätigen.
Bibliotheken wie wxWidgets (hab's mit 2.9 als auch mit 2.8) probiert solten sich doch unter Windows genauso einfach wie unter Linux übersetzen lassen (Das beste Ergebnis, dass ich erzielen konnte war dass die Programme, die gegen wx gelinkt waren direkt abgestürzt sind)
Dann lege mal die wx....dll in deinen Programmpfad.
-
Zumindest bei den nervigen Defines in den Windows-Headern kann ich nur zustimmen. Das kommt mir teilweise auch wie Umweltverschmutzung vor.
Beim Übersetzen von einigen Bibliotheken tu ich mir unter Windows ebenfalls immer wesentlich schwerer als unter Linux. (Wer mir das hier http://zbar.hg.sourceforge.net/hgweb/zbar/zbar/archive/tip.zip in eine VC2010-fähige lib gebaut bekommt, ist mein Held. Gehört hierzu http://zbar.sourceforge.net/ und ja, http://sourceforge.net/apps/mediawiki/zbar/index.php?title=HOWTO:_Compile_with_MinGW_in_Windows kenn ich. ;-))
Eine Paketverwaltung ist schon was tolles.Ansonsten ist halt viel, wie schon gesagt, Gewöhnungssache.
PS: Ich entwickel wesentlich mehr unter Windows (Arbeit) als unter Linux (zuhause).
-
Dobi schrieb:
Beim Übersetzen von einigen Bibliotheken tu ich mir unter Windows ebenfalls immer wesentlich schwerer als unter Linux.
Das liegt aber an den Libraries. Du benutzen idR alle autoconf und Co. Anstatt ein ordentliches Buildsystem dass auch auf anderen Plattformen läuft.
Wenn du einfach nur die VS Projekt Datei aufmachen musst und Build All klicken ists ziemlich easy
-
So wie bei OpenCV (fällt mir nur gerade als erstes ein), stimmt schon.
Mittlerweile muss man ja auch nichtmal mehr drauf achten, die Debug-Iteratoren-Sache fürs release zu deaktivieren.
-
Bitte ein Bit schrieb:
Die WinAPI mag etwas gewöhnunsbedürftig sein, aber nach einiger Zeit möchte man sie nicht mehr missen.
Aber ich fürchte Konzepte, mit denen man sich nicht beschäftigt hat und welche in Konkurrenz stehen, sind schnell etwas verpönt.
Inwiefern? Wenn ich mir http://msdn.microsoft.com/en-us/library/windows/desktop/ff381409%28v=vs.85%29.aspx ansehe, macht das nicht wirklich lust auf mehr.
Unter Linux kann ich mittels pkg-config alle Bibliotheken und Compilerflags einbinden unter Windows scheint es so etwas gar nicht zu geben.
Visual Studio ?
Und?
Dann muss ich halt die ganzen Compilerflags und Libs in VS eintragen. Oder gibt's da was in den höheren Versionen. In VC Express konnte ich nicht der gleichen finden.Es scheint auch keinen Ordner für DLLs zu geben (sowas wie /usr/lib )
C:\Windows\System32 ? COM-Server ?
Im ernst? Ich brauch für jede popelige DLL direkt einen COM-Server?
Die ganzen OpenSource Bibliotheken lassen sich, wenn überhaupt nur mit massivem Aufwand bauen oder brechen mit mit seltsamen Fehlermeldungen ab.
Kann ich bei boost, QT und wxwidgets nicht bestätigen.
Gerade für letzteres kann ich es aber bestätigen weder mit wx2.9 noch mit wx2.8 ließ es sich kompilieren.
Bibliotheken wie wxWidgets (hab's mit 2.9 als auch mit 2.8) probiert solten sich doch unter Windows genauso einfach wie unter Linux übersetzen lassen (Das beste Ergebnis, dass ich erzielen konnte war dass die Programme, die gegen wx gelinkt waren direkt abgestürzt sind)
Dann lege mal die wx....dll in deinen Programmpfad.
Die Bibliotheken waren richtig gesetzt. Das Programm hat sich auch nicht mit "Kann DLL xy nicht finden" verabschiedet, sondern mit einer Absturzmeldung.
dot schrieb:
Interessant. Sehe aber nicht inwiefern das einen Ordner wie /usr/lib ersetzt.
-
Bei der Einstellung gibt es nur einen guten Rat: Go away. Bleib bei Linux. Du willst nicht Windows lernen, Du willst Linux unter Windows. Und da aus Deiner Sicht Linux die Referenz ist wie man alles richtig macht und Windows Sachen anders macht muß es ja per Definition alles falsch sein.
Tu Dir selbst nen Gefallen...
Und nein, es liegt nicht an Windows, es liegt an Deiner Einstellung das Du mit Windows nicht klarkommst. Stichwort: Self-fulfilling-prophecy.
-
Frachtkatamaran schrieb:
Inwiefern? Wenn ich mir http://msdn.microsoft.com/en-us/library/windows/desktop/ff381409%28v=vs.85%29.aspx ansehe, macht das nicht wirklich lust auf mehr.
Ja, weil http://xopendisplay.hilltopia.ca/2009/Mar/Xlib-tutorial-part-9----Buttons.html soviel besser ist.
Und?
Dann muss ich halt die ganzen Compilerflags und Libs in VS eintragen. Oder gibt's da was in den höheren Versionen. In VC Express konnte ich nicht der gleichen finden.Du nimmst einfach die passende Projektdatei und fertig.
Im ernst? Ich brauch für jede popelige DLL direkt einen COM-Server?
Genauso wie du für jede popelige .so einen Corba Server brauchst.
Die ganzen OpenSource Bibliotheken lassen sich, wenn überhaupt nur mit massivem Aufwand bauen oder brechen mit mit seltsamen Fehlermeldungen ab.
Kann ich bei boost, QT und wxwidgets nicht bestätigen.
Gerade für letzteres kann ich es aber bestätigen weder mit wx2.9 noch mit wx2.8 ließ es sich kompilieren.
Dann machst du was falsch.
Aber das ist alles ein Problem der Libraries, nicht von Windows. Windows Librariers gehen nämlich ohne Probleme.Die Bibliotheken waren richtig gesetzt. Das Programm hat sich auch nicht mit "Kann DLL xy nicht finden" verabschiedet, sondern mit einer Absturzmeldung.
Tja, man muss halt wissen was man tut.
Interessant. Sehe aber nicht inwiefern das einen Ordner wie /usr/lib ersetzt.
Dann erstell dir einfach C:\usr\lib und pack deine DLLs dort rein. Ist ja keine große Kunst dabei.
-
Ich sage nur Eclipse mit VM und habe das Beste aus zwei Welten.
-
loks schrieb:
Bei der Einstellung gibt es nur einen guten Rat: Go away. Bleib bei Linux. Du willst nicht Windows lernen, Du willst Linux unter Windows. Und da aus Deiner Sicht Linux die Referenz ist wie man alles richtig macht und Windows Sachen anders macht muß es ja per Definition alles falsch sein.
Tu Dir selbst nen Gefallen...
Und nein, es liegt nicht an Windows, es liegt an Deiner Einstellung das Du mit Windows nicht klarkommst. Stichwort: Self-fulfilling-prophecy.
'nuff said.
-
Frachtkatamaran schrieb:
Unter Linux kann ich mittels pkg-config alle Bibliotheken und Compilerflags einbinden unter Windows scheint es so etwas gar nicht zu geben.
Doch, gibt es: meistens wird für MSVC ein Projekt/Solution mitgeliefert. Notfalls schmeisst man nmake vom MSVC an.
Auch bjam oder scons sind verfügbar.Genauso wie es unter Linux nicht das EINE Buildtool gibt.
Frachtkatamaran schrieb:
Es scheint auch keinen Ordner für DLLs zu geben (sowas wie /usr/lib )
im Windows-Verzeichnis gibt es natürlich einen Ordner. Es gibt sogar seit WinXP DLLs die per Version identifizierbar ist um Versionskonflickte zu vermeiden.
Wenn man keine Admin-Rechte hat, packt man notfalls die DLL in das gleiche Verzeichnis, wie die der EXE.Frachtkatamaran schrieb:
Die WinAPI selbst hat einen seltsame Aufbau und die ganzen typdefs Nerven mehr als sie helfen.
Ich kenne keine alte System-API die nicht merkwürdig ist. die Xlib ist auch nicht der Burner.
Frachtkatamaran schrieb:
Die ganzen OpenSource Bibliotheken lassen sich, wenn überhaupt nur mit massivem Aufwand bauen oder brechen mit mit seltsamen Fehlermeldungen ab.
Konkretes Beispiel?
Frachtkatamaran schrieb:
Bibliotheken wie wxWidgets (hab's mit 2.9 als auch mit 2.8) probiert solten sich doch unter Windows genauso einfach wie unter Linux übersetzen lassen (Das beste Ergebnis, dass ich erzielen konnte war dass die Programme, die gegen wx gelinkt waren direkt abgestürzt sind)
Was hat das mit Windows zu tun? Könnte ja nicht auch an wxWidgets liegen?
Vorallem weil wx eine Multiplattform-Lib ist und mal gar nichts mit Windows-only zu tun hat.
Frachtkatamaran schrieb:
Sind meine Compiler kaputt? Ich bin zu blöd? Oder ist das unter Windows wirklich so schlimm?
Nö, unter Linux läuft es nur anders. Und auch dort musstest du dich hart einarbeiten! Die Fallstricke und das Knowhow hast du intus, und machst die alten Fehler nicht nochmal (oder zumindest nicht ein drittes Mal). Bei Windows fängst du bei Null an: Windows != Linux.
Du musst halt die Windows-Architektur lernen, dann die Tools, dann die APIs.
Übrigens, die Windows API ist Low Level. Wenn du sie als Vergleich heran ziehst, musst du auch eine Low-Level-API von Linux als Vergleich ran ziehen. Ich kenne aber ehrlich gesagt fast keine Anwendungen, die z.B. den X-Server-API nutzen. Die benutzen alle Hi-Level-APIs wie Qt oder GTK+. Das wäre unter Windows dann schon eher so was wie MFC und ATL und nicht WinAPI. Auch wenn die MFC auch nicht der Burner ist, ist sie schon viel einfacher als WinAPI.
-
Also ich komm beim Entwickeln auf Windows wunderbar klar. Unter Linux hätte ich vermutlich ähnliche Probleme wie der TE unter Windows. Man vergisst nur zu gerne die Mühen, die man auf sich nehmen musste, bis man sich fließend ausdrücken kann - ich durfte z.B. das DVCS meiner Wahl patchen damit ich mein Master Repository auf dem USB-Stick von Rechner zu Rechner mitschleppen kann.
Ich hab jetzt schon den Horror davor, irgendwann mal mein Projekt auf Linux portieren zu dürfen - sowas liegt aber nie am OS, sondern immer am Unverstand des Anwenders
-
Habe letytens SFML 2.0 auf Windows fuer VS2012 uebersetzt. Keine Probleme, wurde alles mitgeliefert. Ich bin ja mehr auf Linux zu Hause aber mit VS 2012 bin ich sehr zufrieden. Ja ist halt alles irgendwie anders unter Windows, who cares ...
-
Ach, es traut sich doch nur keiner "Ich find X/Y besser weil..." zu schreiben, weil man nicht wie ein flamender fanboy von X/Y, sondern wie ein weiser Überblickhabender wirken will.
-
Ich find Windows besser, weil..ich nicht unter Linux programmiere
Nein war Spass. Windows und Linux verfolgen nun einmal unterschiedliche Ansätze, und wenn man gewillt ist, unter dem jeweiligen BS zu programmieren, dann muss man sich eben auch mit diesen unterschiedlichen Ansätzen beschäftigen und diese so hinnehmen. Das gilt genauso für Android, IOS, Mac OS, usw.
Ein interessanter Text über das (leidige) Thema findet sich auch hier: http://www.felix-schwarz.name/files/opensource/articles/Linux_ist_nicht_Windows/
-
Burkhi schrieb:
Ein interessanter Text über das (leidige) Thema findet sich auch hier: http://www.felix-schwarz.name/files/opensource/articles/Linux_ist_nicht_Windows/
Wobei das und ähnliches jeder Windowsnutzer unter Linux an den Kopf geworfen bekommt. Ich finde es recht amüsant, wie nun ein Linuxnutzer auf den gleichen Artikel hingewiesen wird, wenn er nun zu Windows kommt.
Ich frage mich, wievielen Umsteigern von Windows nach Linux Frachtkatamaran diesen Artikel vor die Nase hielt. Und nun begeht er denselben Fehler in die andere Richtung.
Aber ich meine das Problem hat man ja nicht nur bei Betriebsystemen. Das Problem gibt es überall. Auch bei Programmiersprachen, Abläufen in Firmen oder wie in einer Familie nun Weihnachten gefeiert wird. Es wird alles überall etwas anders gemacht. Man muss lernen zu aktzeptieren, dass dies so ist, und wenn man anderswo was tun möchte, muss man sich halt anpassen.
Grüssli
-
Hallo,
Das sollte eigentlich kein Flame-Thread Linux gegen Windows. Für so etwas gibt es heise.deShade Of Mine schrieb:
Frachtkatamaran schrieb:
Inwiefern? Wenn ich mir http://msdn.microsoft.com/en-us/library/windows/desktop/ff381409%28v=vs.85%29.aspx ansehe, macht das nicht wirklich lust auf mehr.
Ja, weil http://xopendisplay.hilltopia.ca/2009/Mar/Xlib-tutorial-part-9----Buttons.html soviel besser ist.
Du machst hier einen Fehler und vergleichst die Xlib mit der WinAPI. Die Xlib bringt nicht mal Buttons mit. Und es werden heutzutage auch keine Anwenderprogramme mehr direkt in der Xlib entwickelt. Dafür nimmt man Gtk+, Qt, Motif, etc
Und?
Dann muss ich halt die ganzen Compilerflags und Libs in VS eintragen. Oder gibt's da was in den höheren Versionen. In VC Express konnte ich nicht der gleichen finden.Du nimmst einfach die passende Projektdatei und fertig.
???
Im ernst? Ich brauch für jede popelige DLL direkt einen COM-Server?
Genauso wie du für jede popelige .so einen Corba Server brauchst.
Ich kenne zwar die CORBA Technologie, aber brauchen tu ich sie nicht. Ist unter den Linux Distributionen auch gar nicht Standardmäßig vorinstalliert.
-
Artchi schrieb:
Frachtkatamaran schrieb:
Unter Linux kann ich mittels pkg-config alle Bibliotheken und Compilerflags einbinden unter Windows scheint es so etwas gar nicht zu geben.
Doch, gibt es: meistens wird für MSVC ein Projekt/Solution mitgeliefert. Notfalls schmeisst man nmake vom MSVC an.
Auch bjam oder scons sind verfügbar.Genauso wie es unter Linux nicht das EINE Buildtool gibt.
pkg-config ist aber kein Buildtool.
http://www.freedesktop.org/wiki/Software/pkg-config/[/quote]
Wenn man keine Admin-Rechte hat, packt man notfalls die DLL in das gleiche Verzeichnis, wie die der EXE.
Läuft das nicht irgendwo gegen die Philosophie von Gemeinsamen Bibliotheken?
Was hat das mit Windows zu tun? Könnte ja nicht auch an wxWidgets liegen?
Vorallem weil wx eine Multiplattform-Lib ist und mal gar nichts mit Windows-only zu tun hat.
Hab ich das behauptet?
Ich kenne aber ehrlich gesagt fast keine Anwendungen, die z.B. den X-Server-API nutzen. Die benutzen alle Hi-Level-APIs wie Qt oder GTK+. Das wäre unter Windows dann schon eher so was wie MFC und ATL und nicht WinAPI. Auch wenn die MFC auch nicht der Burner ist, ist sie schon viel einfacher als WinAPI.
Also kann man Windows nur dann Highlevel Programmieren wenn man Geld zahlt?
-
Frachtkatamaran schrieb:
....
Also kann man Windows nur dann Highlevel Programmieren wenn man Geld zahlt?Nein, das kannst du auch problemlos mit dem GCC machen, und der kostet auch unter Windows nix. Oder in C# mit VS Express, Java mit Netbeans oder Eclipse. Die kosten auch nix. Und auch für Eclipse und Netbeans unter Windows gibt es C++ Compiler, ebenfalls kostenlos.