C++ Programmfehler C++

roker002

Commander
Registriert
Dez. 2007
Beiträge
2.069
Ich hab da was sehr lustiges entdeckt.
Naja es ist nicht lustig für mich sonder umgekehrt.

Ich programmiere ein Programm in C++ (job)

da ich aber zuhause ein Vista habe und bei der arbeit nur XPs funktioniert mein Programm auf einmal nicht. Kann es sein dass ich unter XP mein Programm neukompilieren muss?
also auf dem anderen Rechner mit VISTA (meiner ist 64bit und der anderer ist x86) funktioniert alles ohne Probleme!

Also liegt es wirklich an den Compiler?

Hat da jemand ähnliche Erfahrung gemacht!?


Danke
 
Welche IDE / Compiler wird benutzt? Wie hostile feststellte dürften hier Run Time Librarys fehlen.
Abhilfe, statisch linken oder bei Visual C++ die Runtimes installieren (vcredist_x86.exe). Wird bei VC++ mitgeliefert, bzw. kann bei MS heruntergeladen werden.
VS2008 hat als default Target Vista, ggf. Target WINVER ändern, das betriftt in der Hauptsache irgendwelche Steuerelemente die es in XP nicht gibt.
Mit Depends.exe (von VC++ / SDK) kannst du die Runtime Abhängigkeiten überprüfen.
 
hmm ich glaube ich habe da schon die .NET 3.5 installiert...
naja muss nochmal prüfen.

Ja tut mir lei. Hätte sofort sagen sollen. Benutze VS 2008

bin kein grosser fan von VS deswegen kann ich nicht sofort auf anhieb die sachen klären.

Ich kann beim Erstellen von einen Projekt ja sofort statische Bibliothek angeben. Hast du es so gemeint Blackman?


Die Fehlermeldung ist folgende:

Das Programm kann nicht ausgeführt werden. Bitte installieren Sie es neu

Sonst steht da nichts.

ich habe jetzt den denpends.exe ausprobiert. Bekomme 2 Fehlermeldungen und eine Warnung.

es sind

Error: At least one module has an unresolved import due to a missing export function in an implicitly dependent module.
Error: Modules with different CPU types were found.
Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.

Eigentlich sind da keine Zusätliche Funktionen drinne die ich selbst programmiert habe. nur der Layout. Den Projekt habe ich als 32bit kompilieren lassen. Mein Vista ist aber 64bbit deswegen vielleicht die eine Fehlermeldung. Die Erste Fehlermeldung würde ich aber gerne erklärt bekommen.:freaky:


Najut ich versuchs weiter was dran zu basteln. Vielleicht wird was klappen. :o


Danke für die vorläufige Hilfe!
 
Erst mal nehme ich an das du eine Version ab der prof. verwendest, bei der kostenlosen funktioniert einiges nicht.
Das statische linken funktioniert nur bei crt / mfc Prjekten, bei managed code (.net) geht es eh nicht und macht auch keinen Sinn.
Bei dynamisch gelinkten muss auf dem Zielsystem die vcredist (32 oder 64 BIT) installiert sein, bei managed zus. die entsprechende .net Runtime (je nach BUILD Target 32 / 64).
Für Zielplattform kleiner als Vista muss WINVER. MSIE ... per #define vorgegeben werden.
Falls du für deine Steuerelemente irgendetwas ähnliches wie ocx ..., also was über die 'normalen' API Oberflächenelemente hinausgeht, verwendest kann es Probleme geben.
Hier solltest du ein Setup Projekt erstellen und die 'fremden' Elemente darin mit einbinden.
Zum Thema ocx, hier gibt es auch Lizenzpflichtige. Ohne die entspechende Lizenz geht auf dem Ziel mal gar nichts.

Die erste Fehlermeldung kann unterschiedliche Ursachen haben, typisch wären hier fehlende oder falsche benötigte Runtimes (vcredist, .net, ocx ...)

Die zweite ebenso, typisch ist heir die erforderliche Runtime liegt in unterschiedlicher Version oder 32 / 64 BIT Problem vor.
---------------------------------------
Um alle erforderlichen Module herauszufinden, mal depends auf dem System durchführen wo alles läüft. Hilft für das Setup Projekt.
 
Blackman du kennst dich aber aus! naja
Hat alles geklappt... in den TARGET.H standt vista oder win 98 als Vorraussetzung.. wieso 98 habe ich aber nicht begriefen. hab dann kurzerhand auf XP umgestellt

Code:
#ifndef WINVER
#define WINVER 0x0501
#endif

Klappt alles aber xp version sieht scheisse aus :p

Ja ich habe die Pro version, weil ich den Studentenrabatt nehme :p

Ne ganz andere Frage.

Wenn ich aus einen EditBox (Edit Controll) jetzt die eingaben auslesen will, welche funktion sollte ich dazu benutzen? Ich habe schon einen Handler angelegt der OnChange arbeitet.

kann ich getdlgitemtext irgendwie benutzen? naja hab ja vorher nur Consolenprogramme programmiert :p
 
Aso... ist einfacher als ich dachte

Also für die leute die nach eine Antwort dadrauf suchen.


Zuerst eine Control Variable für den Edit box oder was auch immer hinzufügen.

dann Ereignishandler hinzufügen der auf OnChange funktioniert.

Code:
UpdateData(TRUE);
StringControl.GetWindowTextW(StringVar); //StringVar ist Value Variable des Edit Boxes
UpdateData(FALSE);  //StringControl ist die Control Variable des Edit Boxes

D.h. auf jeden Update der Eingabe wird im StringVar neugeschrieben
 
Zurück
Oben