std vector probleme bei size()
-
so steht die funktion in der klasse, in der dll
std::vector< std::string> SysInfo::getAllFiles(std::string path){ std::vector <std::string> v; HANDLE fHandle; WIN32_FIND_DATA wfd; fHandle=FindFirstFile(path.c_str(),&wfd); do { if (!( (wfd.cFileName[0]=='.') && ( (wfd.cFileName[1]=='.' && wfd.cFileName[2]==0) || wfd.cFileName[1]==0 ) )) { if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { //MessageBox(0,wfd.cFileName,"Folgendes Verzeichnis wurde gefunden:",0); // Datei ist keine, sondern ein Verzeichnis... // Hier könnte man dasselbe nochmal machen, um auch die // Unterverzeichnisse zu scannen ;-) } else { v.push_back(wfd.cFileName); //MessageBox(0,wfd.cFileName,"Folgende Datei gefunden:",0); } } } while (FindNextFile(fHandle,&wfd)); FindClose(fHandle); return v; }
diese funktion wird in main aufgerufen und ist mein ansprechpartner in der dll
std::vector<std::string> f(void){ return inf.getAllFiles("C:\\*"); }
und hier passierts
extern __declspec(dllimport) std::vector <std::string> f (void); int main(int argc, _TCHAR* argv[]) { int x = 0; unsigned int size = f().size(); // <- dort bei der größe
in xmemory
void deallocate(pointer _Ptr, size_type) { // deallocate object at _Ptr, ignore size operator delete(_Ptr); }
ich habe absolut keien idee was ich falsch gemacht habe
im prinzip funktioniert es sogar alles, ich muss nur immer die meldung wegklicken und habe dann alle dateien auf c...
-
Weil EXE und DLL unterschiedliche Speichermanager benutzen solange du nicht die Laufzeitbibliothek als DLL linkst.
-
--- schrieb:
Weil EXE und DLL unterschiedliche Speichermanager benutzen solange du nicht die Laufzeitbibliothek als DLL linkst.
bitte was?