Forum: PC-Programmierung Win CE 6.0 R3: Probleme bei Verwendung der Stream Klassen


von JoW (Gast)


Angehängte Dateien:

Lesenswert?

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

von JoW (Gast)


Lesenswert?

Hat niemand eine Idee? :-(

Grüße, JoW

von hasenklein (Gast)


Lesenswert?

Hallo,

kontrolliere die Includes, z. B. #include <ios> etc.

Gruß

von JoW (Gast)


Lesenswert?

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

von JoW (Gast)


Lesenswert?

Werden die Stream-Klassen denn überhaupt von Windows Embedded CE 
unterstützt?

Grüße, JoW

von JoW (Gast)


Lesenswert?

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

von Peter II (Gast)


Lesenswert?

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.

von JoW (Gast)


Angehängte Dateien:

Lesenswert?

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

von Peter II (Gast)


Lesenswert?

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.

von JoW (Gast)


Lesenswert?

Kann ich einfach so in Libs suchen? Da steht doch nur sehr sparsam 
Klartext drin, oder?

Danke Dir schonmal!

Grüße, JoW

von Peter II (Gast)


Lesenswert?

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.

von JoW (Gast)


Lesenswert?

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

von Peter II (Gast)


Lesenswert?

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"?

von JoW (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.