Hallo, ich versuche in einem Windows Embedded CE 6.0 R3 Projekt die Streamklassen zu verwenden. Unteranderem fstream und strstream. Beim Compilieren meines Subprojects im VisualStudio2005/PlatformBuilder treten sehr viele Fehler bzgl. den Dateien xiosbase, streambuf und xlocnum auf. Im Anhang befindet sich der relevante Auszug aus dem Errorlog. Kann mir jemand sagen, wie dieses Problem gelöst werden kann? Vielen Dank! JoW
Hallo, kontrolliere die Includes, z. B. #include <ios> etc. Gruß
Hallo hasenklein, Ich habe die benötigten Header, z.B. strstream includiert und den korrekten Pfad eingetragen. Diese Header inkludieren anschließend wiederum selbstständig ihre zusätzlich benötigten Header Files. Dass es an meinen Header-Angaben liegt, schließe ich aus. Der erste Error bezieht sich beispielsweise auf diese Code-Zeile:
1 | // CLASS ios_base
|
2 | class _CRTIMP2_PURE ios_base |
3 | : public _Iosb<int> |
4 | { // base class for ios |
5 | public:
|
6 | _BITMASK(_Fmtflags, fmtflags); |
7 | |
8 | ...
|
Der Compiler sagt hier: "error C2470: 'ios_base' : looks like a function definition, but there is no parameter list; skipping apparent body" Der Compiler versteht hier also irgendwie nicht, dass es sich um eine Klassen- und nicht um eine Funktionsdefinition handelt. Woran kann dies liegen? Greets, JoW
Werden die Stream-Klassen denn überhaupt von Windows Embedded CE unterstützt? Grüße, JoW
Noch eine Ergänzung: Komisch ist, dass unter dem Installationspfad von Visual Studio 2005 unter \VC\ce\include alle benötigten Headerdateien wie z.B. fstream, strstream, iostream etc. vorhanden sind. Kann es sein, dass diese dort standardmäßig implementiert sind, eine Implementierung der Funktionen aber nicht erfolgte und somit der Linker beim Linken auf die C++ Standard-Bibliothek die gewünschten Verweise/Symbole nicht findet? Viele Grüße, JoW
JoW schrieb: > und somit der Linker beim Linken auf die C++ > Standard-Bibliothek die gewünschten Verweise/Symbole nicht findet? nein, weil bei dir der compiler meckert und nicht der linker. Bist du sicher das du nicht in einem anderne Header ein ; vergessen hast.
Oh. Entschuldige, vor lauter werkeln hab ich weitergeschrieben ohne upzudaten. Ich habe begonnen, mein großes Projekt von Anfang an zu portieren. Dabei habe ich zunächst die Files, die auf die Streamklassen zugreifen in ein neues Projekt kopiert. Ich finde aktuell alle benötigten Header Files. Der Linker meckert allerdings rum. (Siehe Anhang). Vielleicht könnten wir an dieser Stelle weitermachen und das Problem von hinten aufrollen. Danke! Greets, JoW
da fehlt irgendeine lib, such doch einfach mal in den libs nach std::ios_base::_Ios_base_dtor dort wo es drin steht -> diese brauchst du.
Kann ich einfach so in Libs suchen? Da steht doch nur sehr sparsam Klartext drin, oder? Danke Dir schonmal! Grüße, JoW
JoW schrieb: > Kann ich einfach so in Libs suchen? Da steht doch nur sehr sparsam > Klartext drin, oder? ja, es stehen aber die symbole(wie z.b. std::ios_base::_Ios_base_dtor ) drin, sonst wüsste der linker auch nicht wo er suchen soll.
Vielen Dank an dich, Peter II. Deine Antworten haben mir sehr geholfen. Ich habe es nun geschafft, das ganze erfolgreich zu erstellen. Ich teste es aber morgen noch auf der Hardware. Beim Kompilieren traten jedenfalls keine Fehler mehr auf. Ich musste aus <VSInstallDir>\VC\ce\lib folgende Libraries einbinden: libcpmtd.lib msvcrt.lib libcmtd.lib Sagen die dir etwas? Viele Grüße, JoW
JoW schrieb: > Sagen die dir etwas? > msvcrt.lib ja das ist doch die Runtime, die sollte immer mit drin sein, hast du eventuell an den Optionen rumgespiel "ignore standard libs"?
Hängt evtl. damit zusammen, dass es sich bei meinem Projekt um ein Subproject im Platformbuilder handelt und ich dort diese alle händisch einbinden muss. Ich habe in den Subproject Properties deine genannte Option nämlich nicht gefunden. Viele Grüße, JoW
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.