Moinsen, Mein Programm, dass ich für die Kommunikation über die serielle Schnittstelle in VS 6.0 in MFC geschrieben habe, habe ich nun in VS 2005 übernommen. Naja... es funzt net mehr. Ich kenn mich mit den Unterschieden zwischen VS 6.0 und VS 2005 nicht aus. Ich hab auch in einigen Foren gelesen, dass in .NET zur Programmierung der seriellen Schnittstelle C# empfohlen wird?! Kann sich wer die Klasse anschauen und mal debuggen, ich weiss nicht ob es viel Aufwand ist, sie für VS 2005 anzupassen?! Danke!
> es funzt net mehr
Das ist eine äußerst präzise Fehlerbeschreibung.
Möchtest Du Dein MFC-Projekt mit VS2005 übersetzen? Dann genügt nicht
die kostenlose "Express"-Version, weil der die MFC-Unterstützung fehlt.
Möchstes Du Dein MFC-Projekt nach C# portieren?
Das heißt alles neu schreiben.
Die beiden von Dir geposteten Sourcefiles (die ganz offensichtlich nicht
von Dir sind) enthalten allerdings kaum MFC-spezifische Dinge; mit einem
C++-Compiler und dem Windows-SDK sollte das auch verwendbar sein. Du
musst aber darauf achten, echtes C++ und nicht die
Microsoft-Perversion "managed C++" zu verwenden, die nämlich ist nur
eine Verpackung für das unsägliche .Net-Geraffel und hat mit C++ nicht
wirklich viel gemein.
Ok, ich kann natürlich auch einen Auszug der Errorlist posten. Ich habe NIE behautpet, dass diese Klasse von mir geschrieben wurde, ich habe lediglich geschrieben, dass ich mein Projekt in VS 2005 (Vollversion) portiert habe. Nein, ich möchte das MFC- Projekt nicht in C# schreiben, da es in VS 6.0 läuft und ich den Rest um diese Klasse neu schreiben müsste. Aber wenn sich diese Klasse nicht portieren lässt, kann ich mein neus Projekt gleich in C# schreiben. Fehlerliste: warning C4996 'sprintf' was declared deprecated (Line 131) warning C4996 'sprintf' was declared deprecated (Line 132) error C2664: 'CreateFileW': cannot convert parameter 1 from 'char*' to 'LPCWSTR'(Line 141) error C2664: 'BuildComDCBW': cannot convert parameter 1 from 'char*' to 'LPCWSTR'(Line 167) error C2664: 'MessageBoxW': cannot convert parameter 2 from 'char*' to 'LPCWSTR'(Line 413) wanring C4267: 'argument': conversion from 'size_t' to 'DWORD', possible loss of data
Rufus t. Firefly wrote: >> es funzt net mehr > > Das ist eine äußerst präzise Fehlerbeschreibung. Full Ack > Möchtest Du Dein MFC-Projekt mit VS2005 übersetzen? Dann genügt nicht > die kostenlose "Express"-Version, weil der die MFC-Unterstützung fehlt. Meines Wissens gibt es kein VS2005 Express (VS=Visual Studio). Es gibt Visual Basic 2005 Express, Visual C# 2005 Express und sogar (!) Visual C++ 2005 Express. Visual Studio 2005 gibt es z.B. als Standard, Professional, Enterprise oder wie auch immer das heisst. Und ab Standard ist MFC-Unterstützung drin. @ S!mply Red Also, raus mit der Sprache, was funzt net mehr?
S!mply Red wrote: > Ok, ich kann natürlich auch einen Auszug der Errorlist posten. > warning C4996 'sprintf' was declared deprecated (Line 131) > > warning C4996 'sprintf' was declared deprecated (Line 132) 'deprecated' bedeutet, dass diese Funktion nicht mehr verwendet werden sollte. Nur Microsoft weiß warum, sprintf ist eine Standard- Funktion und also solches völlig in Ordnung. > error C2664: 'CreateFileW': cannot convert parameter 1 from 'char*' to > 'LPCWSTR'(Line 141) Kann es sein, dass du auf Unicode umstellst. Die W Versionen vieler Funktionen wollen dann anstelle eines normalen Textes in " " eine "wide Character Version". Entweder du drehst den Unicode Support in deinem VS ab oder du benutzt dern von MS dafür vorgesehenen Datentyp wchar_t * > > wanring C4267: 'argument': conversion from 'size_t' to 'DWORD', possible > loss of data Der ist allerdings ungewöhnlich. Du kompilierst doch nicht etwa für eine 64 Bit CPU? Schau dir einfach die Stelle an, an der die Zuweisung ist und entscheide ob dir da ein Problem entstehen kann oder nicht. size_t liefert die Größe eines Datentyps in Bytes. Der size_t von int ist beispielsweise 4, der von long normalerweise 8 usw. also alles kleine Zahlen. In der Mehrzahl der Fälle ist es kein Problem einen size_t in einen DWORD zu verwandeln. Wenn das an der Stelle auch so ist, dann behebe das Problem mit einem Cast.
> warning C4996 'sprintf' was declared deprecated (Line 131)
Diese Warnung kann man global abschalten. Welcher Teufel MS dabei
geritten hat, ist unklar.
Allerdings - und da muss ich Karl Heinz widersprechen- ist sprintf in
der Tat nicht sicher, wenn schon, dann snprintf.
Aber auch das wird mit derselben bekloppten Warnung 4996 angemäkelt.
@Severino:
Schön, daß Du das so präzise auseinanderhältst. Ich habe vorsichtig
nachgefragt, weil absolut nicht sicher ist, daß der Threadstarter das
auch so tut.
Rufus t. Firefly wrote: >> warning C4996 'sprintf' was declared deprecated (Line 131) > > Diese Warnung kann man global abschalten. Welcher Teufel MS dabei > geritten hat, ist unklar. > > Allerdings - und da muss ich Karl Heinz widersprechen- ist sprintf in > der Tat nicht sicher, wenn schon, dann snprintf. Da hast du natürlich völlig recht. Ich wollte meine Anmerkung eigentlich darauf bezogen wissen, dass es aus Sicht des C++ Standards keinen formalen Grund gibt, warum sprintf nicht verwendet werden sollte. Es ist und wird auch in Zukunft eine Funktion des C++ Standards sein und ist keineswegs in irgendeiner Form 'abgekündigt', wie einen die Warnung glauben lassen könnte. Das es natürlich haufenweise Gründe gibt, warum sprintf schlecht ist, wie auch scanf, sscanf, gets, die ganzen originalen K&R str... Funkt. und noch ein paar mehr, die mir momentan nicht einfallen, steht auf einem anderen Blatt.
> Diese Warnung kann man global abschalten. Welcher Teufel MS dabei > geritten hat, ist unklar. > Aber auch das wird mit derselben bekloppten Warnung 4996 angemäkelt. Weil die Funktionen 1. wie schon erwähnt unsicher sind, 2. die von MS vorgeschlagenen Ersatzvarianten ala _snprintf_s im Gegensatz zu den ISO/IEC-Varianten das Ergebnis mit einem \0 terminieren 3. deprecated zwar auch veraltet, aber auch ablehnen/missbilligen bedeutet TR 24731 http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1146.pdf
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.