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 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_PUREios_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
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
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