FTP-Client und nicht aufgelöstes externes Symbol



  • Hallo,

    ich schreibe grad aus Petzold's den FTP-Clienten und hab jetzt diese doofen nicht aufgelösten externen Symbole. Im Buch steht nicht, das ich irgendwas besonderes linken oder so muss.

    Hier der betreffende Code:

    //FtpThread: Liest Dateien von FTP-Server und kopiert sie auf lokalen Datenträger
    void FtpThread(PVOID parg)
    {
    	BOOL			bSuccess;
    	HINTERNET		hIntSession, hFtpSession, hFind;
    	HWND			hwndStatus, hwndButton;
    	PARAMS			*pparams;
    	TCHAR			szBuffer[64];
    	WIN32_FIND_DATA	finddata;
    
    	pparams = parg;
    	hwndStatus = GetDlgItem(pparams->hwnd, IDC_STATUS);
    	hwndButton = GetDlgItem(pparams->hwnd, IDCANCEL);
    
    	//Internet-Sitzung anlegen
    	hIntSession = InternetOpen(szAppName, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0) ;
    
    	if(hIntSession == NULL)
    	{
    		wsprintf(szBuffer, TEXT("InternetOpen: Fehler %i"), GetLastError());
    		ButtonSwitch(hwndStatus, hwndButton, szBuffer);
    		_endthread();
    	}
    
    	SetWindowText(hwndStatus, TEXT("Internet-Sitzung eröffnet..."));
    
    	//Hat der Besitzer "Abbrechen" geklickt?
    	if(!pparams->bContinue)
    	{
    		InternetCloseHandle(hIntSession);
    		ButtonSwitch(hwndStatus, hwndButton, NULL);
    		_endthread();
    	}
    
    	//FTP-Sitzung anlegen
    	hFtpSession = InternetConnect(hIntSession, FTPSERVER, INTERNET_DEFAULT_FTP_PORT, NULL, NULL, INTERNET_SERVICE_FTP,
    									0, 0);
    	if(hFtpSession == NULL)
    	{
    		InternetCloseHandle(hIntSession);
    		wsprintf(szBuffer, TEXT("InternetConnect: Fehler %i", GetLastError()));
    		ButtonSwitch(hwndStatus, hwndButton, NULL);
    		_endthread();
    	}
    
    	SetWindowText(hwndStatus, TEXT("FTP-Sitzung eröffnet..."));
    
    	//Hat der Besitzer "Abbrechen" geklickt?
    	if(!pparams->bContinue)
    	{
    		InternetCloseHandle(hFtpSession);
    		InternetCloseHandle(hIntSession);
    		ButtonSwitch(hwndStatus, hwndButton, NULL);
    		_endthread();
    	}
    
    	//FTP-Verzeichnis wählen
    	bSuccess = FtpSetCurrentDirectory(hFtpSession, DIRECTORY);
    
    	if(!bSuccess)
    	{
    		InternetCloseHandle(hFtpSession);
    		InternetCloseHandle(hIntSession);
    		wsprintf(szBuffer, TEXT("Fehler beim Wechsel ins FTP-Verzeicnis %s"), DIRECTORY);
    		ButtonSwitch(hwndStatus, hwndButton, NULL);
    		_endthread();
    	}
    
    	SetWindowText(hwndStatus, TEXT("Verzeichnis gefunden..."));
    
    	//Hat Benutzer "Abbrechen" geklickt?
    	if(!pparams->bContinue)
    	{
    		InternetCloseHandle(hFtpSession);
    		InternetCloseHandle(hIntSession);
    		ButtonSwitch(hwndStatus, hwndButton, NULL);
    		_endthread();
    	}
    
    	//Erste Datei lesen, die ins Suchmuster passt
    	hFind = FtpFindFirstFile(hFtpSession, TEMPLATE, &finddata, 0, 0);
    
    	if(hFind == NULL)
    	{
    		InternetCloseHandle(hFtpSession);
    		InternetCloseHandle(hIntSession);
    		ButtonSwitch(hwndStatus, hwndButton, TEXT("Datei(en) nicht gefunden"));
    		_endthread();
    	}
    
    	do
    	{
    		if(!pparams->bContinue)		//"Abbrechen"
    		{
    			InternetCloseHandle(hFind);
    			InternetCloseHandle(hFtpSession);
    			InternetCloseHandle(hIntSession);
    			ButtonSwitch(hwndStatus, hwndButton, NULL);
    			_endthread();
    		}
    
    		//Datei vom FTP-Server auf den lokalen Datenträger kopieren - aber nur, wenn sie dort noch nicht existiert
    		wsprintf(szBuffer, TEXT("Lese Date $s..."), finddata.cFileName, TRUE, FILE_ATTRIBUTE_NORMAL, 
    					FTP_TRANSFER_TYPE_BINARY, 0);
    	}
    	while(InternetFindNextFile(hFind, &finddata));
    
    	InternetCloseHandle(hFind);
    	InternetCloseHandle(hFtpSession);
    	InternetCloseHandle(hIntSession);
    
    	ButtonSwitch(hwndStatus, hwndButton, TEXT("Download aus dem Internet beendet"));
    }
    

    und hier die Fehlermeldung:

    SmashFTP error LNK2019: Nicht aufgeloestes externes Symbol __imp__FtpSetCurrentDirectoryA@8, verwiesen in Funktion _FtpThread
    SmashFTP error LNK2019: Nicht aufgeloestes externes Symbol __imp__FtpFindFirstFileA@20, verwiesen in Funktion _FtpThread
    SmashFTP error LNK2019: Nicht aufgeloestes externes Symbol __imp__InternetCloseHandle@4, verwiesen in Funktion _FtpThread
    SmashFTP error LNK2019: Nicht aufgeloestes externes Symbol __imp__InternetConnectA@32, verwiesen in Funktion _FtpThread
    SmashFTP error LNK2019: Nicht aufgeloestes externes Symbol __imp__InternetFindNextFileA@8, verwiesen in Funktion _FtpThread
    SmashFTP error LNK2019: Nicht aufgeloestes externes Symbol __imp__InternetOpenA@20, verwiesen in Funktion _FtpThread
    SmashFTP fatal error LNK1120: 6 unaufgeloeste externe Verweise
    

    Danke schonmal für eure Hilfe!





  • MSDN... natürlich.

    Danke 👍



  • Zoran schrieb:

    MSDN... natürlich.

    Wie immer... 😎

    Bye, TGGC (Demo or Die)



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • du musst Wininet.lib linken 😉



  • das steht auch im petzold wenn mich mein sinn nicht täuscht 😉


Anmelden zum Antworten