VC++ Problem



  • Hallo,
    vorneweg ich finde das hier ne super Seite! Aber jetzt zu meinem Problem: Ich habe ein Programm geschrieben (in Visual C++ 2008 Express Edition); Im Debugmodus ist alles gut doch wie bekomme ich eine fertige .exe raus um mein Prog auf anderen Rechnern zu installieren? 😕



  • Build|Batch build..." Release auswählen und dann Rebuild drücken !?

    Auch solltest Du gegen die CRT statisch linken, damit Du nicht noch mehr Dateien als die EXE ausliefern musst...
    Siehe:
    http://blog.kalmbach-software.de/de/2008/03/05/wie-man-statisch-gegen-die-c-runtime-crt-linkt/



  • cl : Command line error D8016 : '/MTd' and '/clr:pure' command-line options are incompatible
    

    ... es kommt dieser Code 😮



  • Sorry Problem gefunden doch jetz kommt das hier:

    .\webbrowser.cpp(8) : error C2337: 'STAThreadAttribute' : attribute not found
    .\webbrowser.cpp(9) : error C2065: 'array' : undeclared identifier
    .\webbrowser.cpp(9) : error C2653: 'System' : is not a class or namespace name
    .\webbrowser.cpp(9) : error C2065: 'String' : undeclared identifier
    .\webbrowser.cpp(9) : error C2059: syntax error : '>'
    .\webbrowser.cpp(10) : error C2143: syntax error : missing ';' before '{'
    .\webbrowser.cpp(10) : error C2447: '{' : missing function header (old-style formal list?)
    AssemblyInfo.cpp
    .\AssemblyInfo.cpp(3) : error C2871: 'System' : a namespace with this name does not exist
    .\AssemblyInfo.cpp(4) : error C2653: 'System' : is not a class or namespace name
    .\AssemblyInfo.cpp(4) : error C2871: 'Reflection' : a namespace with this name does not exist
    .\AssemblyInfo.cpp(5) : error C2653: 'System' : is not a class or namespace name
    .\AssemblyInfo.cpp(5) : error C2871: 'CompilerServices' : a namespace with this name does not exist
    .\AssemblyInfo.cpp(6) : error C2653: 'System' : is not a class or namespace name
    .\AssemblyInfo.cpp(6) : error C2871: 'InteropServices' : a namespace with this name does not exist
    .\AssemblyInfo.cpp(7) : error C2653: 'System' : is not a class or namespace name
    .\AssemblyInfo.cpp(7) : error C2871: 'Permissions' : a namespace with this name does not exist
    .\AssemblyInfo.cpp(14) : error C2337: 'AssemblyTitleAttribute' : attribute not found
    .\AssemblyInfo.cpp(15) : error C2337: 'AssemblyDescriptionAttribute' : attribute not found
    .\AssemblyInfo.cpp(16) : error C2337: 'AssemblyConfigurationAttribute' : attribute not found
    .\AssemblyInfo.cpp(17) : error C2337: 'AssemblyCompanyAttribute' : attribute not found
    .\AssemblyInfo.cpp(18) : error C2337: 'AssemblyProductAttribute' : attribute not found
    .\AssemblyInfo.cpp(19) : error C2337: 'AssemblyCopyrightAttribute' : attribute not found
    .\AssemblyInfo.cpp(20) : error C2337: 'AssemblyTrademarkAttribute' : attribute not found
    .\AssemblyInfo.cpp(21) : error C2337: 'AssemblyCultureAttribute' : attribute not found
    .\AssemblyInfo.cpp(34) : error C2337: 'AssemblyVersionAttribute' : attribute not found
    .\AssemblyInfo.cpp(36) : error C2337: 'ComVisible' : attribute not found
    .\AssemblyInfo.cpp(38) : error C2337: 'CLSCompliantAttribute' : attribute not found
    .\AssemblyInfo.cpp(40) : error C2337: 'SecurityPermission' : attribute not found
    .\AssemblyInfo.cpp(40) : error C2653: 'SecurityAction' : is not a class or namespace name
    .\AssemblyInfo.cpp(40) : error C2065: 'RequestMinimum' : undeclared identifier
            missing quotes ("") around 'RequestMinimum'?
    \Form1.h(7) : error C2871: 'System' : a namespace with this name does not exist
    \Form1.h(8) : error C2653: 'System' : is not a class or namespace name
    \Form1.h(8) : error C2871: 'ComponentModel' : a namespace with this name does not exist
    \Form1.h(9) : error C2653: 'System' : is not a class or namespace name
    \Form1.h(9) : error C2871: 'Collections' : a namespace with this name does not \Form1.h(10) : error C2653: 'System' : is not a class or namespace name
    \Form1.h(10) : error C2871: 'Forms' : a namespace with this name does not exist
    \Form1.h(11) : error C2653: 'System' : is not a class or namespace name
    \Form1.h(11) : error C2871: 'Data' : a namespace with this name does not exist
    \Form1.h(12) : error C2653: 'System' : is not a class or namespace name
    \Form1.h(12) : error C2871: 'Drawing' : a namespace with this name does not exist
    \Form1.h(23) : error C2059: syntax error : 'public'
    \Form1.h(23) : error C2059: syntax error : 'public'
    \Form1.h(23) : error C2653: 'System' : is not a class or namespace name
    \Form1.h(24) : error C2143: syntax error : missing ';' before '{'
    \Form1.h(24) : error C2447: '{' : missing function header (old-style formal list?)
    


  • Jochen Kalmbach schrieb:

    Auch solltest Du gegen die CRT statisch linken, damit Du nicht noch mehr Dateien als die EXE ausliefern musst...

    Darüber lässt sich streiten. Ich würde eher das "Microsoft Visual C++ 2008 Redistributable Package" verwenden (http://www.microsoft.com/downloads/details.aspx?familyid=9B2DA534-3E03-4391-8A4D-074B9F2BC1BF&displaylang=en)

    Grund:
    a) Sprachversion ist auswählbar
    b) Es reicht wenn es einmal installiert wird und nicht jedes Programm meint statisch linken zu müssen
    c) Das Packet so oder so früher oder später auf nahezu jeden Windowsrechner installiert wird (Programme mit Visual C++ sind nunmal sehr verbreitet)

    Ich weiß das könnte eine längere Diskussion geben, nur ich würde neben den statischen Linken immer auch die andere Möglichkeit nennen.

    cu André



  • SonnY|Wh!te schrieb:

    Sorry Problem gefunden doch jetz kommt das hier:

    Okay, in diesem Fall muss das .Net Framework (Runtimeversion) auch noch auf den Rechner installiert werden, ich nehme mal an das 3.5er...

    [Und ich glaube mich zu erinnern das man bei .Net Anwendungen nicht statisch linken kann, aber dies will ich jetzt nicht verifizieren]

    cu André



  • 1. Du hast ein .NET Programm erstellt und solltest somit in C++/CLI posten
    2. Es gibt keinen anderen Weg, Du *musst* das vcredist_x86.exe auf jedem Zielrechner installieren; und natürlich das .NET Framework

    Siehe:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-143003.html



  • Jochen Kalmbach schrieb:

    1. Du hast ein .NET Programm erstellt und solltest somit in C++/CLI posten
    2. Es gibt keinen anderen Weg, Du *musst* das vcredist_x86.exe auf jedem Zielrechner installieren; und natürlich das .NET Framework

    Kann man dieses .NET Zeugs nicht abstellen? Dieses Programm soll warscheinlich auf 5x15 Schulcomputern installiert werden. Und dann noch mal die vcredist_x86.exe das erlaubt der Direktor warscheinlich nich 😃



  • Hallo

    Klar kann man das .net Zeug abstellen und zwar indem man es nicht verwendet. Wenn du allerdings Klassen aus dem Framework benutzt, brauchst du dich nicht wundern, wenn es installiert sein muss.

    chrische



  • Es ist ganz einfach:
    Erstelle *kein* .NET Programm, dann brauchst Du kein .NET. Ist ja logisch, oder?

    Erstelle einfach ein neues Projekt aber dann bitte "Win32" und nicht "CLR".
    Und dann noch umstellen, damit Du statisch linkst, dann sollte es auf allen Rechnern ab W2k laufen.



  • Danke,danke für die ganzen Antworten werde das alles jetzt mal ausprobieren!
    Das Videotutorial hat mir sehr geholfen! 👍



  • nochmal aber wenn ich eine Win32 Anwendung erstellen will kann ich nur eine Win32-Konsolenanwendung erstellen.



  • Hallo

    Na klar. Was willst du denn genau machen?

    chrische



  • So was mit Drag&Drop mit Headerdatei und allem 😞



  • Die Express-Edition hat als GUI nur Windows-Forms; und das benötigt .NET.

    Wenn Du Student bist, kannst Du die Prof. Version kostenlos bekommen, da ist dann MFC dabei, damit kann man auch mit native Code GUI machen.

    Oder Du arbeitest Dich in wxWidgets ein...



  • Hallo

    SonnY|Wh!te schrieb:

    So was mit Drag&Drop mit Headerdatei und allem 😞

    Dazu brauchst du halt ein Framework. Vielleicht solltest du dich mal im Subforum GUI umschauen.

    chrische



  • und was ist mit der Standart-Edition?



  • Standart-Edition keine Ahnung warum das zensiert ist :p



  • Hallo

    es wird zensiert, weil du es falsch schreibst. Mit der Standardedition kannst du auch die MFC benutzen

    OT: Wenn man wissen, will, ob ein d oder t geschrieben wird, weil man ein t spricht, so sollte man das Wort verlängern und dann aussprechen. (Beispiel: Freund -> Freunde) bei Freund spricht man t, bei Freunde d.

    chrische



  • Die Standard Version geht natürlich auch... hat auch MFC dabei...



  • Die Standard-Edition kostet aber immernoch viel (69,99€ bin Schüler) und das mit dem kostenlosen Professional klappt auch nicht. Gibt es nicht auch andere Möglichkeiten (außer MFC)? Habe in meiner neueren VC++ Version (2008) gelesen das man unter Win32-> eine Fensteraplikation erstellen kann. Habe mir dort ma den C++ Code angeguckt doch verstehen dort gar nichts. Keine form1.h oder so.


Anmelden zum Antworten