Problemm mit einer einfeachen String funktion



  • Hi, ich möchte eine DLL laden und hab dafür die einfache Funktion um den Pfad der DLL herauszufinden(sie liegt immer im verzeichnis von Programm):

    char * dllname()
    {
    //	return "C:\\KeyDll.dll";
    
    	char lpszDllDirectory[256];
    	getcwd( lpszDllDirectory, 256);
    
    	if (lpszDllDirectory[strlen(lpszDllDirectory)-1] != '\\' )
    	{
    			strcat(lpszDllDirectory,"/");
    	}
    		strcat(lpszDllDirectory,"KeyDll.dll");
    	//MessageBox(NULL,lpszDllDirectory,"",NULL);
    	return lpszDllDirectory;
    
    }
    

    Allerdings funtkioniert das so nur alle 5 mal oder so.

    Wenn ich dagegen

    char * dllname()
    {
    return "C:\\KeyDll.dll";
    
    }
    

    schreibe, funktionierts immer. Ich habe allerdings mit der MessageBox immer den selbst erstellten Pfad der DLL überprüft, und er stimmt. Woran kann das liegen?
    Danke schonmal 🙂



  • Das geht nicht, weil du einen Zeiger auf eine lokale Variable zurückgibst 😉 Die werden ja bei Funktions-Ende zerstört. Entweder du gibst einen std::string zurück (wir sind ja im C++-Forum), oder du machst die lpszDllDirectory-Variable statisch, dann verschwindet sie nicht.



  • klaro thx :).
    Ich liebe dieses Forum 😃 .


Anmelden zum Antworten