C-Programm in C++Programm konvertieren????
-
Hallo Leute,
ich hoffe meine Anfrage steht im richtigen Forum.Meine Aufgabe ist es ein C-Programm, welches mit dem Microsoft Visual Studio 2003 entwickelt wurde, nun in C++ mit dem Visual Studio 2010 zum Laufen zu bekommen und dann zu ändern.
Ich habe es automatisch vom Visual Studio konvertieren lassen und "nur" die zahlreichen Fehler- und Warnmeldungen versucht zu beheben. Doch in dem Programm sind sehr viele Aufrufe von
malloc
und viele Funktionen
strncpy, strcat, wscat, strcpy, wcscpy und sprintf
brauchen jetzt eine Puffergröße. Da ich diese oft nicht kenne, habe ich sicher viele Fehler eingebaut. Es funktioniert jedenfalls nicht.
Hat einer von euch eine Idee wie es besser geht, wo eine Anleitung dazu steht, oder ob es günstiger ist, dass Programm gleich neu zu schreiben??
Vielen Dank schon mal
Triple?
-
Ohne die Fehlermeldung der Konvertierung kann Dir Keiner helfen.
Glaskugeln sind rar, selten und teuer.
Schau doch mal in die FAQ. Das wird Deinen Post verbessern
Der Kompiler der IDE VS2010 hat die Libs zu den von Dir benannten Funktionen.
-
Die von dir genannten Funktionen gibt es in VS 2010 genau so noch, und die brauchen auch keine zusätzlichen Parameter.
Nur dass es Overloads gibt mit zusätzlichen Parametern, bzw. die ganzen ..._s Funktionen als Alternative zu den "alten".
Muss man aber nicht verwenden.
-
Bei malloc musst du in C++ die Rückgabe in den passenden Zeigertyp casten. Beispiel:
//vorher: int *pi=malloc(10*sizeof(int)); //nachher: int *pi=(int*)malloc(10*sizeof(int));
Bei den anderen Funktionen werden dir nur Warnungen angezeigt, keine Fehler. Falls es dich trotzdem stört, kannst du den Code umschreiben (z.B.
strcpy
=>strncpy
oderstrcpy_s
), oder aber einfach die Warnung abschalten, indem du_CRT_SECURE_NO_WARNINGS
definierst (am besten in den Projekteinstellungen).
-
Danke für eure Hinweise.
Ich hab den einfachen Weg gewählt und die ganzen Warnungen wegen unsicherer Funktionen mit _CRT_SECURE_NO_WARNINGS unterdrückt, sowie die malloc-Aufrufe mit dem passenden Zeigertyp versehen.
Vielen Dank.Doch jetzt hab ich noch einen Linker-Fehler. Könnt ihr mir bitte auch dabei helfen?
msimg32.lib(neuralnet.obj) : warning LNK4204: Für "D:\..\..\Debug\vc100.pdb" fehlen Debuginformationen für das Verweismodul; Objekt wird verknüpft, als ob keine Debuginformationen vorhanden wären.
Mein Projekt ist aus mehreren Unterprojekten (P01 - P04) zusammengesetzt. Wenn ich P04 kompiliere und er alles zusammenlinkt, erscheint die obige Warnung.
Da ich in der Dateien scatter.cpp von P02 msimg32.lib benötige, binde ich sie dort auch ein:#pragma comment(lib,"msimg32.lib")
Wieso fehlen jetzt msimg32.lib Debuginformationen über eine andere Datei (nämlich neuralnet.cpp) dieses Projektes?
Ich habe msimg32.lib in den Projekteigenschaften dem Linker kundgetan, bzw. die obige pragma-Anweisung in neuralnet.cpp eingetragen. Aber entweder interessiert es ihn nicht, oder er bringt gleich hunderte diese Warnungen.
Wo fehlt nun wieder etwas?Vielen Dank schon mal,
Triple?