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?


Anmelden zum Antworten