fstream in DLL
-
Hallo,
Ich wollte in einer DLL, die ich gerade schreibe, eine Datei schreiben, nur funktioniert das nicht.
#include <fstream> void Start() { std::ofstream F; F.open( "config.ini" ); F << "0"; F.close(); } BOOL WINAPI DllMain(HINSTANCE hModule, DWORD dwReason, LPVOID lpReserved) { if( dwReason == DLL_PROCESS_ATTACH ) { CreateThread(0, 0, (LPTHREAD_START_ROUTINE)Start, 0, 0, 0); } return TRUE; }
Kann mir jemand sagen, wieso die Datei nicht geschrieben wird? Ich hoffe ich bin hier im richtigen Bereich, wusste nicht, ob das noch Standart C++ ist. . .
-
1. Schlägt hier wieder die internationale casting woche zu.
Du solltest die Signatur der Thread Funktion (start) so anpassen, dass der Cast nach LPTHREAD_START_ROUTINE nicht mehr nötig ist. Alles andere ist falsch und schlecht!
2. Lies in der Doku zu DllMain nach.. Threads starten gehört nicht zu den erwünschten Sachen in DllMain (wird nicht oder verzögert gestartet).
Simon
Edit:
Ausserdem fehlt CloseHandle(..) des Thread Handles.
-
Danke estmal für die Hinweise. Ich weiß aber zu 100%, dass der Thread gestartet wird, da ich zum Test den Computer einen Piep-Ton hab machen lassen, wenn Start() gestartet wurde.