Visual Studio 2005 - C++ Programme erstellen ohne .net Framework



  • Artchi schrieb:

    Nein, er benötigt dafür definitiv kein .NET!!!!!!! Außer du erstellst wirklich ein .NET-Projekt, was du aber nicht gemacht hast (MFC, Win32, Win-Anwedung, ATL usw. sind unmanaged Programme).

    Schau mal hier, da steht sowohl der Grund als auch die Lösung:
    http://www.codeproject.com/cpp/vcredists_x86.asp

    Das ganze hat nur was mit der Distri zu tun (du mußt da was ändern, dein Kumpel brauch kein .NET), MS hat da leider einen Bug im VS8.0 drin, der bestimmt mit dem nächsten Servicepack für VS8 behoben wird. Zumindest ist das Problem MS bekannt und auf der msdn.com bekannt gegeben.

    Hallo!

    Ich schreibe in 10 Foren, aber so eine kompetente Antwort hat mir bisher noch keiner gegeben. Danke! Nur ist mein englisch nicht perfekt und als Anfänger muss ich meine Fragen einfach stricken und verstehe nur antworten, die nicht allzu komplex sind.
    Ist es also nicht möglich, dass ich mit meinem frisch, für viel Geld erworbenen 1. VS 2005 eine einfache Hallo Welt Konsolenanwendung schreibe, ohne dass sich meine bekannten .net installieren? (weil nach der installtion gehts ja)
    2. Kann ich in den Projhekteigenschaften etwas einstellen, um den bug zu umgehen. Ich habe auch kein CLI an.
    3. Woher kann ich in Erfahrung bringen, wann dieser Servicepack oder ein patch rauskommt. im msdn.com finde ich mich noch nicht wirklich zu recht!

    Vielen Dank für alles soweit!



  • Artchi schrieb:

    MS hat da leider einen Bug im VS8.0 drin, der bestimmt mit dem nächsten Servicepack für VS8 behoben wird. Zumindest ist das Problem MS bekannt und auf der msdn.com bekannt gegeben.

    Was für ein Bug soll denn dies sein? Mir ist keiner bekannt... das ganze ist so "by design"... oder was meinst Du genau?

    Zum eigentlichen Problem:
    Ab VC8 wird bei verwendung der DLL-Versionen der CRT/MFC/ATL immer ein Manifest benötigt. Dies muss entweder in die EXE eingebettet sein, oder im gleichen Verzeichnis wie die EXE liegen. Man kann auch die CRT/MFC/ATL DLLs mit der Anwendung ausliefern, ohne dass dies installiert werden muss. Hierzu ist dann auch nochmals eine (oder mehrere) Manifest-Dateien für diese DLLs notwendig. Diese befinden sich im "redist" Verzeichnis von VC8.
    Wenn Du das Problem komplett umgehen willst, kannst Du einfach Deine EXE statisch linken (also nicht gegen die DLLs). Dann werden keine Manifests benötigt (ausser für das CommonControl6 😉 ).

    PS: Die Manifest-Überprüfung gibt es aber erst seit XP und ab W2k1...



  • Jochen Kalmbach schrieb:

    Artchi schrieb:

    MS hat da leider einen Bug im VS8.0 drin, der bestimmt mit dem nächsten Servicepack für VS8 behoben wird. Zumindest ist das Problem MS bekannt und auf der msdn.com bekannt gegeben.

    Was für ein Bug soll denn dies sein? Mir ist keiner bekannt... das ganze ist so "by design"... oder was meinst Du genau?

    Zum eigentlichen Problem:
    Ab VC8 wird bei verwendung der DLL-Versionen der CRT/MFC/ATL immer ein Manifest benötigt. Dies muss entweder in die EXE eingebettet sein, oder im gleichen Verzeichnis wie die EXE liegen. Man kann auch die CRT/MFC/ATL DLLs mit der Anwendung ausliefern, ohne dass dies installiert werden muss. Hierzu ist dann auch nochmals eine (oder mehrere) Manifest-Dateien für diese DLLs notwendig. Diese befinden sich im "redist" Verzeichnis von VC8.
    Wenn Du das Problem komplett umgehen willst, kannst Du einfach Deine EXE statisch linken (also nicht gegen die DLLs). Dann werden keine Manifests benötigt (ausser für das CommonControl6 😉 ).

    PS: Die Manifest-Überprüfung gibt es aber erst seit XP und ab W2k1...

    Hilfe! Jetzt sagts du zwar, wie man das Problem umgehen kann, aber ich verstehe nicht wie. Bitte eine Step-by-Step anleitung für Anfänger!



  • Also ich selber habe damals nur die Beta von VC2005 auspronbiert. Von dem Problem hab ich aber hier öffters gelesen und ich habs auch schon auf MSDN gesehen. Aber wenn ich so die ersten Absätze vom Codeproject-Artikel lese, dann mußt du bei denem HelloWorld-Win32-Programm eigentlich CRT (C Runtime Lib) statisch linken, um das Distri-Problem zu umgehen. Wenn es dynamisch gelinkt wird, muß man wohl alle Steps durchgehen, die in dem Artikel drin stehen. Wie du es linkst, müsste in den Projekt-Einstellungen drin stehen. Schau da mal nach.

    Ansonst wird dir wohl hier jemand anders vielleicht besser helfen, können, der VC2005 sein eigen nennt.

    Servicepacks sollen im Sommer erscheinen. Und ja, du hast ein teures Produkt gekauft, das bei der selbstverständlichsten Sache der Welt geschlampt hat. Aber das ist nun mal MS. 😉

    Artchi

    PS: Ich würde mein englisch verbessern, da du ohne englisch in der Programmierung einfach aufgeschmissen bist. Man muß kein Dolmetscher sein, aber gutes Schhulenglisch sollte drin sein.



  • Als Hilfe fürs Englisch: dict.leo.org 👍



  • Jochen Kalmbach schrieb:

    Artchi schrieb:

    MS hat da leider einen Bug im VS8.0 drin, der bestimmt mit dem nächsten Servicepack für VS8 behoben wird. Zumindest ist das Problem MS bekannt und auf der msdn.com bekannt gegeben.

    Was für ein Bug soll denn dies sein? Mir ist keiner bekannt... das ganze ist so "by design"... oder was meinst Du genau?

    Ein Zitat aus dem Codeproject-Artikel:

    Microsoft forgot to include the required Windows Installer 3.1 in the redistributable.

    Wenn jemand etwas vergisst, damit etwas problemlos funktioniert, ist es ein Bug. Wie soll man sowas sonst nennen? 😕 Klar kann man sagen "Das ist so gewollt, halt by Design." Aber selbst dann frag ich mich, warum es einen Projekt-Wizard gibt, wenn er trotzdem vergisst default-mäßig die ganzen Manifests usw. anzulegen. Da hat MS meiner Meinung nach geschlammpt.

    Ist ja auch egal.. jedenfalls taucht dieses Problem in jedem Forum (auch MSDN-Foren) auf. Sind alle Programmierer zu doof? Glaub ich kaum...



  • Artchi schrieb:

    Microsoft forgot to include the required Windows Installer 3.1 in the redistributable.

    Wenn jemand etwas vergisst, damit etwas problemlos funktioniert, ist es ein Bug. Wie soll man sowas sonst nennen?

    Naja... das löst ja aber nicht das Problem... es hilft nur die DLLs zu installieren. Die Manifests benötigst Du trotzdem noch korrekt...
    Aber, MS hätte das gleich mitliefert können (wobei man es sich ja selber runterladen kann...).

    Artchi schrieb:

    Klar kann man sagen "Das ist so gewollt, halt by Design."

    Ich meinte eigentlich, dass mit dem Manifest. Das ist so gewollt.

    Artchi schrieb:

    Aber selbst dann frag ich mich, warum es einen Projekt-Wizard gibt, wenn er trotzdem vergisst default-mäßig die ganzen Manifests usw. anzulegen. Da hat MS meiner Meinung nach geschlammpt.

    Ich kenne kein Beispiel wo bei einem Projekt das Manifest vergessen wird... wenn jemand eines hat, bitte mir zukommen lassen!!! (ausser natürlich wenn man es naträglich deaktiviert hat...)

    Artchi schrieb:

    Ist ja auch egal.. jedenfalls taucht dieses Problem in jedem Forum (auch MSDN-Foren) auf. Sind alle Programmierer zu doof? Glaub ich kaum...

    Das Problem ist, dass dies neu ist und das SxS-zeugs IMHO nicht so ganz gelungen ist... aber es ist kein "Problem" sondern wirklich so gewollt...



  • Danke an alle! Das Problem ist gelöst.

    Genug Theorie (ich selber kapier auch nicht wieso und warum). Hier die Einstellungen, um das Problem zu behebn und Programme bei anderen Menschen zum Laufen zu bringen.

    Projekt --> <PROJEKTNAME>-Eigenschaften --> Konfigurationeigenschaften --> Allgemein --> Verwendung von MFC
    und hier bitte auf "MFC in einer statischen Bibliothek verwenden" auswählten. Erstellen--- fertig 🙂



  • Hi,
    ich habe die Express 2005, und habe das selbe Problem.

    Wenn ich jedoch statische Library verwenden gehe bekomme ich beim compilen diesen Error:

    Compiling...
    cl : Command line error D8016 : '/MT' and '/clr:pure' command-line options are incompatible

    Weiß jemand woran das liegt?



  • Du kannst kein Programm erstellen, welches das .NET-Framework verwendet und statisch gelinkt ist! Du musst gegen die DLL linken!
    http://www.codeproject.com/cpp/vcredists_x86.asp



  • Also Ok.
    Ich hab wirklich gestern grade erst angefangen mit VC++ rumzuspielen. (Grundkenntnisse in c++ hab ich)

    Leider verstehe ich von dem Text absolout nichts. (Inhaltlich)

    Könnte mir jemand vielleicht sagen was ich machen kann um mein "tolles" Programm auch auf nem anderen Pc zum laufen zu bringen?

    Ich war eigentlich absolut motiviert in vc++ einzusteigen aber wenns schon mit so nem scheiß los geht ... Vielleicht gibts ja ne Lösung die auch ich als Einsteieger verstehe... 😕 🙂



  • Achso und nochwas. Ich bin auf der Suche nach Tutorials für Express 2005. Bei Microsoft gibt leider nur ein Video, und in der MSDN blick ich im Moment gar nicht durch. Vielleicht hat jemand nen guten link für mich? 🙂



  • 1. Du musst Dich entscheiden was Du machen willst. Bei VC2005 gibt es zwei Möglichkeiten:
    * Native Win32 Programmierung (also C/C++)
    * Managed Programmierung (also C++/CLI; setzt dann auch das .NET-Framework vorraus)

    Du hast in Deinem Beispiel eine C++/CLI Anmwendung gemacht (was dann das .NET-Framework vorraussetzt). Wenn Du eine native Win32-Anwendung machen willst, dann musst Du das aktuelle Platform SDK installieren und in VC-Express einbinden:
    http://blog.kalmbachnet.de/?postid=58
    (irgendwo gibt es auch noch eine Beschreibung mit vielen bunten Bildern...)

    Mit der Express kannst Du aber wirklich native nur Win32-Programme machen, die relativ Aufwand bedeuten, wenn Du das mit GUI machen willst. Wenn Du eine GUI (Graphical User-Interface) machen willst, geht mit der Express nut C++/CLI und dann Windows-Forms (ich persönlich Rate Dir dann aber zu C#).
    Oder Du kaufst Dir zumindest die Standard-Version, da ist dann noch die MFC dabei, mit der man auch nativ "relativ" einfach GUI Anwendungen machen kann...



  • Jochen! Verheimliche doch bitte nicht immer, das es mehr Alternativen zur GUI-Programmierung als die WinForms gibt. Wir wissen hier alle, das du gerne .NET propagierst, aber man sollte fair sein und sagen, das es auch noch wxWidgets, GTKmm u.a. GUI-Toolkits gibt, wenn man (verständlicherweise) keine Win32-API benutzen will.

    @argh! Wie Jochen schon richtig gesagt hat, hast du anscheinend bei der Projekt-Erstellung explizit ein .NET-Projekt ausgewählt. Denn für .NET kann man auch in C++ programmieren. Verständlicherweise braucht dann auch der User .NET auf seinem PC. Wenn du das nicht willst, mußt du nur die richtige Projekt-Art auswählen. Es gibt da mind. Win32 als Konsolenanwendung, das wäre dann natives C++.

    Wenn du Fenster-Anwendungen programmieren willst, hast du mehrere Möglichkeiten. Entweder hardcore Win32-API, was aber heute keiner mehr macht da es eine C-basierte API ist. Oder du nimmst ein GUI-Toolkit wie die MFC (nur ab Standard-Edition) oder eines der kostenlosen OpenSource-Libraries, wie wxWidgets, GTKmm, Qt, usw. Die sind komfortabler, da es C++ basierte APIs sind. Wir haben hier auch noch ein passendes GUI-Unterforum.

    Dann gibts noch die WindowsForms-Anwendungen, wofür man aber das .NET-Framework benötigt. Das kannst du natürlich auch nehmen, wenn dir und deinen Anwendern .NET nichts ausmacht.



  • Hi, danke für deine Antwort.

    Was kannst du denn empfehlen? Ich bin jetzt gerade dabei die SDK Platform zu installieren wobei ich keinen Ahnung hab für was das gut ist..^^

    Wie baue ich denn am besten eine Windows Application - zB. einen Terminkalender?

    Ich möchte wenn dann gleich mit was richtigem anfangen anstatt 100€ oder wieviele Euros auszugeben und gleich was gscheits in der Hand zu haben. (bin schüler, und würde mir dann halt ne Schülerversion kaufen)

    Kann man mit der Express Edition überhaupt etwas anfangen?

    Wenn ich anwendungen mit MFC entwickle brauche ich immer das NET Framework?

    Vielen Dank schonmal!



  • Und nochwas... schön dass ich ich entscheiden kann... 😃 aber ich hab keine ahnung was was is und für was was gut ist und was für mich am besten geeignet is....

    Könnte mir jemand vielleicht schnell verraten was der Untershcied zwischen einer nativen win32 anwendung is und NET?



  • Aso und nochwas...^^

    Hab mich jetzt mal im GUI Berreich etwas umgeschaut... Mit welchem GUI Toolkit kirge ich denn auch einigermaßen ein Design hin? (oder ist das wurscht?)

    Was ist denn da am weitesten verbreitet?



  • Artchi schrieb:

    Jochen! Verheimliche doch bitte nicht immer, das es mehr Alternativen zur GUI-Programmierung als die WinForms gibt. Wir wissen hier alle, das du gerne .NET propagierst, aber man sollte fair sein und sagen, das es auch noch wxWidgets, GTKmm u.a. GUI-Toolkits gibt, wenn man (verständlicherweise) keine Win32-API benutzen will.

    Tschuldigung... ich dachte hier ginge es primär um MFC/MS... für die anderen gibt es ja sogar ein eigenes Forum, deswegen habe ich sie nicht explizit erwähnt
    http://www.c-plusplus.net/forum/viewforum-var-f-is-51.html

    Aber wenn man schon unter "Frameworks" postet, dann hätte dies einem auffallen sollen... deswegen sehe ich es nicht als notwendig an hier nochmals explizit darauf hinzuweisen...



  • Ultimate++ gefä##llt mir am besten.. hat das auch irgenwelche größeren nachteile?



  • Ich bin jetzt gerade dabei die SDK Platform zu installieren wobei ich keinen Ahnung hab für was das gut ist..^^

    Damit kannst du für die Windows-Platform Programme schreiben bzw. es stellt dir alle nötigen APIs zur Verfügung. Die Express Edition kann zwar C++ Code compilieren, aber du bekommst ja nur die Standard-C++-Lib dazu. Um z.B. DirectX programmieren zu können, müsstest du ja auch das DirectX-SDK downloaden (weiß jetzt nicht ob das schon im PlatformSDK dabei ist). Im Platform SDK sind halt alle wichtigen APIs für Windows-Technik bei.

    Wer die Standrd-Edition von VS kauft, hat da halt schon die PlatformSDK bei.

    Ich möchte wenn dann gleich mit was richtigem anfangen anstatt 100€ oder wieviele Euros auszugeben und gleich was gscheits in der Hand zu haben. (bin schüler, und würde mir dann halt ne Schülerversion kaufen)

    Versteh ich jetzt nicht. Willste 100 EUR ausgeben oder nicht? In der Standard oder Pro sind natürlich mehr Sachen bei, auch die IDE hat mehr Funktionen.

    Wie baue ich denn am besten eine Windows Application - zB. einen Terminkalender?

    Wie gesagt, geht mit jeder vernünftigen GUI-Lib. Welche, ist halt Geschmackssache, da alle ihre Vor- und Nachteile haben.

    Wenn ich anwendungen mit MFC entwickle brauche ich immer das NET Framework?

    Nein.

    Könnte mir jemand vielleicht schnell verraten was der Untershcied zwischen einer nativen win32 anwendung is und NET?

    Naja, ist ja jetzt wohl etwas viel verlangt. Da schreiben andere ganze Bücher drüber. Wir haben aber im Magazin-Unterforum einen Beitrag, was das .NET ist. Win32-Anwendungen sind halt Programme die unter Windows laufen und kein .NET brauchen. .NET ist halt eine neue Technologie und Framework von MS, die man halt benutzen kann, wenn man will.

    Hab mich jetzt mal im GUI Berreich etwas umgeschaut... Mit welchem GUI Toolkit kirge ich denn auch einigermaßen ein Design hin? (oder ist das wurscht?)

    Was meinst du mit Design? Ein GUI-Toolkit sollte ein Minimum erfüllen, und das können alle bekannten Toolkits leisten. Kommt darauf an, was dein Anspruch ist. Reicht es dir nur für Windows zu entwickeln? Oder willst du doch eher für Windows, Linux und Unix entwickeln? Willst du Geld ausgeben? Oder willst du alles kostenlos machen? Ist dir ein originales Windows-Look&Feel wichtig? Oder stört es dich nicht, wenn die GUI auch eigenwillig aussieht? (muß nicht schlechter sein, aber es gibt Leute, die wollen das Windows-Programm wie ein solches auch aussieht) Welche Lizenz bevorzugst du? (OpenSource oder Closed Source?)

    Was ist denn da am weitesten verbreitet?

    Unter Windows ist es die MFC, ist auch offiziell von MS so bestätigt. Kein Wunder, es ist bei jeder VC++ Version dabei und wird somit von den meisten VC++-Usern genutzt. Mit VC++ 2005 Express ist es zum ersten mal nicht dabei, da es eine Express vorher nie gab. Aber ab der 2005 Standard wieder drin.

    wxWidgets ist auch recht verbreitet, z.B. ist der AOL Messanger und Xara damit programmiert.

    Unter Linux sind dann Qt (KDE) und GTK bzw. GTKmm (Gnome) praktisch Standard. GIMP ist z.B. mit GTK programmiert. Opera mit Qt.

    Alles eine Frage des Geschmacks und der Anforderungen.


Anmelden zum Antworten