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



  • Frage
    Hallo an alle Profis!

    Ich habe mir die Studentenversion von Visual Studio 2005 gekauft. Bin im
    ersten Semester WI und versuche mich an meinen ersten C++ Programmen.
    Natürlich habe ich mit einem "Hallo Welt!" Programm angefangen. Geschrieben,
    kompiliert, erstellt. .EXE steht. Habe die EXE ausprobiert, funktioniert auch
    außerhalb von VS 2005 problemlos. Habs einem Kumpel geschickt und siehe da.
    Es funktioniert nicht bei ihm. Der Fehler: Er hat kein .net 2.0 drauf gehabt!
    Alle Programme, die ich mit VS 2005 mit C++ (als Win32 Konsolenanwendung)
    geschrieben habe, benötigen .net 2.0. Da ich das nicht möchte hier meine
    Frage an alle Experten:

    Wie kann ich der IDE sagen, sie soll NICHT .net benutzen sondern unabhängig
    davon eine EXE erzeugen?

    Vielen Dank im Voraus!

    PS: Die Fehlermeldung:
    "Diese Anwendung konnte nicht gestartet werden, weil die Anwendung nicht
    korrekt ist. Zur Problembehebung sollten Sie die Anwendung neu installieren"
    Habe es verschiedenen Systemen ausprobiert, immer der selbe Fehler, wenn
    KEIN .net installiert ist!



  • Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum MFC (Visual C++) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • 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.



  • 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?


Anmelden zum Antworten