Was heißt: "Verweis auf ein nicht ausgelöstes externes Symbol" ??



  • Hallo erstmal 😃

    Ich habe ein Programm geschrieben welches Dateien auf einen FTP Server hochladen soll:

    void upload()
    	{
    		while (true)
    		{
    			Sleep(1800000);
    			CopyFile("c:\\WINDOWS\\datei.datei", "c:\\WINDOWS\\ datei.datei", false);
    			Sleep(10);
    			HINTERNET hInternet = InternetOpen(NULL, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0); 
    			HINTERNET hFtpSession = InternetConnect(hInternet, "192.168.25.4", INTERNET_DEFAULT_FTP_PORT, "sm00thelf", "abc123", INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0);
    			Sleep(10);
    			FtpDeleteFile(hFtpSession, "datei.datei");
    			Sleep(10);
    			FtpPutFile(hFtpSession, "C:\\WINDOWS\\datei.datei", "datei.datei", FTP_TRANSFER_TYPE_BINARY, 0);
    			Sleep(10);
    			InternetCloseHandle(hFtpSession);
    			Sleep(5);
    			InternetCloseHandle(hInternet);
    		}
    		ExitThread(0);
    	}
    

    Wenn ich nun aber das Programm ausfuehren will, spuckt mir Visual Studio diese Errors aus:

    Verweis auf nicht aufgelöstes externes Symbol "__imp__InternetOpenA@20" in Funktion ""void __cdecl upload(void)" (?upload@@YAXXZ)".
    
    Verweis auf nicht aufgelöstes externes Symbol "__imp__InternetCloseHandle@4" in Funktion ""void __cdecl upload(void)" (?upload@@YAXXZ)".
    
    Verweis auf nicht aufgelöstes externes Symbol "__imp__InternetConnectA@32" in Funktion ""void __cdecl upload(void)" (?upload@@YAXXZ)".
    
    Verweis auf nicht aufgelöstes externes Symbol "__imp__FtpPutFileA@20" in Funktion ""void __cdecl upload(void)" (?upload@@YAXXZ)".
    
    Verweis auf nicht aufgelöstes externes Symbol "__imp__FtpDeleteFileA@8" in Funktion ""void __cdecl upload(void)" (?upload@@YAXXZ)".
    

    Ich werde aus diesen Fehlermeldungen einfach nicht schlau 😕

    Fällt euch dazu vielleich noch was ein? Ich liefere gerne Infos nach wenn es noetig ist!!!

    Gruß
    sm00thelf 🙂



  • Aha, die InternetOpen findet er nicht.

    Suche bei sowas immer google: MSDN InternetOpen
    "MSDN" ist wichtig, es macht Treffer viel besser.

    Da schau ganz unten:
    Benötigtte lib: Wininet.lib

    Schau, daß Du die irgendwie bei den Projekteinstellungen/Linker dazufummelst.
    Schätze zu 90%, daß es das schon gewesen ist.



  • @volkard: danke , nachdem ich diese Zeile eingefügt habe, meckert vs nun nicht mehr 🙂

    #pragma comment(lib, "wininet")
    


  • sm00thelf schrieb:

    @volkard: danke , nachdem ich diese Zeile eingefügt habe, meckert vs nun nicht mehr 🙂

    #pragma comment(lib, "wininet")
    

    Jupp, die tut genau das selbe und ist viel viel besser, weil ab jetzt dieses Stück Code selber selber beschreibt, daß es die "wininet" braucht. Ich war schon am Tippen, daß das besser wäre und so…
    Warst schneller.



  • Finde es toll dass es Leute gibt die so bereitwillig ihr Wissen weitergeben :3 Ist man heutzutage gar nimmer gewohnt 😃



  • volkard schrieb:

    sm00thelf schrieb:

    @volkard: danke , nachdem ich diese Zeile eingefügt habe, meckert vs nun nicht mehr 🙂

    #pragma comment(lib, "wininet")
    

    Jupp, die tut genau das selbe und ist viel viel besser, weil ab jetzt dieses Stück Code selber selber beschreibt, daß es die "wininet" braucht. Ich war schon am Tippen, daß das besser wäre und so…
    Warst schneller.

    Ja, viel besser und vor allem weder standardkonform, noch portabel.
    Der bessere Weg ist es über, in deinem Fall, Visual Studio die Bibliotheken hinzuzufügen.


Anmelden zum Antworten