.txt Datei schreiben von einer .dll aus
-
Hallo erstmal,
Vorne weg, ich arbeite unter WinXP SP2 mit Visual C++ 2008 Express Edition.
Ich habe folgendes Problem, ich will in einer .dll ein Log schreiben, scheitere aber an der Fehlermeldung meines Compilers:eror C2871: 'System': Es ist kein Namespace mit diesem Namen vorhanden
File::AppendAllText("c:/log.txt",Log);
und
CStdioFile output; CString outpfad = "Log.txt"; output.Open("c:\\Log.txt",CFile::modeWrite | CFile::modeCreate,NULL); output.WriteString(Log); output.Close();
hab ich bereits ausprobiert, aber beide benötigen namespace System, welches ich nicht einbinden kann.
Meine Includes:
#include "stdafx.h" #include <windows.h> #include <iostream>
Wenn jemand einen ganz anderen Weg kennt, wie sich meine dll mir mitteilen kann bin ich dafür offen.
Danke schonmal fürs Lesen,
Grüße Wolle
-
System als Namespace?
Das deutet doch stark auf .NET hin.
UndFile::AppendAllText("c:/log.txt",Log);
bestätigt mir denke ich diese Vermutung.
Also entweder musst du halt (zumindest teilweise) managed-code schreiben wenn du .NET nutzen willst, oder du darfst eben keine dieser Komponenten (File:: ist eben eine solche .NET-Klasse) verwenden.
Welche schritte von nöten sind, um in C++ Code für die CLR zu schreiben bin ich mir grad nicht sicher - irgendwo in den Properties gibts dafür aber sicher 'nen entsprechenden Schalter. Habe da aber keine Erfahrung, weil ich .NET nur mit C# verwende...
-
noch was: CStdioFile und CString sind MFC-Klassen - die brauchen also definitiv kein .NET.
Wenn du deine erste Codezeile (File:: etc.) entfernst, sollte es gehen.
Wenn nicht, poste doch mal genau die Codestelle, auf die die Warnung verweist?
-
Visual C++ Express Edition hat keine MFC. CStdioFile und CString kann also nicht gehen. FILE sollte möglich sein, aber vielleicht fehlen in der stdafx.h einige includes? kann jetzt nicht nachsehen, aber ich glaube FILE braucht <stdio.h>.
-
Dieser Thread wurde von Moderator/in estartu aus dem Forum MFC (Visual C++) in das Forum C++/CLI mit .NET verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Danke für die Antworten.
Ich hab jetzt #include <stdio.h> mit dabei, aber es ändert nichts:error C2065: 'CStdioFile': nichtdeklarierter Bezeichner
Dasselbe bei File.
In der VS Hilfe steht zwar, dass CStdioFile eine Klasse mit dem Konstruktor ::CStdioFile ist, aber dann bekomme ich diese Meldung:error C2653: 'CStdioFile': Keine Klasse oder Namespace
Was auch in der Hilfe stand, mir aber auch nicht hilft:
class CStdioFile : public CFile;
erzeugt den Fehler:
error C2504: 'CFile': Basisklasse undefiniert
MSDN schrieb:
Requirements
Header: afx.hWenn ich aber den header aber einbinde kommt der Fehler:
fatal error C1189: #error : WINDOWS.H already included. MFC apps must not #include <windows.h>
Lustigerweise kommt der Fehler nicht, wenn ich windows.h direkt einbinde, sondern nur mit <afx.h>. Diesen Fehler werd ich nur los wenn ich in meiner .cpp und .h datei <windows.h> und <aclapi.h> weglasse, nur leider brauch ich die für andere Funktionen.
Nochmals Danke für den Zeitaufwand,
Grüße Wolle
-
Weil Du keine MFC hast, kannst Du CStdioFile (und CFile) nicht brauchen.
Eine (von Tester2 vorgeschlagene) Alternative ist über das C- File IO: mit stdio.h und den Funktionen fopen, fread, fwrite und fclose und der FILE Struktur.Ein anderer Weg wäre die C++ File IO zu benutzen. Dazu den Header fstream includieren und mit den Klassen std::ifstream (lesen) und std::ofstream (schreiben) zu arbeiten.
Gruss Simon
-
Danke für die schnelle Antwort.
simon.gysi schrieb:
Weil Du keine MFC hast, kannst Du CStdioFile (und CFile) nicht brauchen.
Eine (von Tester2 vorgeschlagene) Alternative ist über das C- File IO: mit stdio.h und den Funktionen fopen, fread, fwrite und fclose und der FILE Struktur.Ich meine das hätte ich ausprobiert und geschrieben, dass es nicht tut (oder ihr habt was anderes gemeint wie ich)
Ein anderer Weg wäre die C++ File IO zu benutzen. Dazu den Header fstream includieren und mit den Klassen std::ifstream (lesen) und std::ofstream (schreiben) zu arbeiten.
Gruss Simon
Vielen Dank, so funktioniert das ganze!
#include <fstream> std::ofstream output("C:\\Log.txt"); output<<"Test-Log"; output.close();
Danke für die Mühe,
Grüße Wolle