FTP Upload HILFE!!!



  • Hallo,

    Also ich will eine normale Textdatei (.txt) auf meinen ftp-Server von funpic hochladen, mein momentaner Code sieht so aus:

    #include <windows.h>
    #include <wininet.h>
    #include <process.h>
    #include <iostream>
    #include <fstream>
    #include<stdio.h>
    #include<conio.h>
    
    using namespace std;
    
    void upload(void);
    
    int main()
    {
    
            upload();
    
    }
    
    void upload()
    {
        HINTERNET hOpen, hConnection;
    
        hOpen = InternetOpen(0, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
    
        hConnection = InternetConnect(hOpen,"ftp.name.funpic.de" , INTERNET_DEFAULT_FTP_PORT,
                                         "id", "passwort", INTERNET_SERVICE_FTP, 0, 0);
    
    	FtpPutFile(hConnection, "D:\\test.txt", "test.txt", FTP_TRANSFER_TYPE_ASCII, 0);
    
        InternetCloseHandle(hConnection);
        InternetCloseHandle(hOpen);
    }
    

    Sooo und die Errors, die er ausgiebt so:

    1>d:\programme\c++\projekt\projekt\projekt.cpp(31) : error C2664: 'InternetConnectW': Konvertierung des Parameters 2 von 'const char [26]' in 'LPCWSTR' nicht möglich
    1>        Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
    1>d:\programme\c++\projekt\projekt\projekt.cpp(33) : error C2664: 'FtpPutFileW': Konvertierung des Parameters 2 von 'const char [12]' in 'LPCWSTR' nicht möglich
    1>        Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
    

    Habe die Errors schon gegoogelt aber so richtig schlau bin ich nciht draus geworden :(!

    Bitte helft mir und sagt, was ich falsch hab 😕

    MFG
    UndeadLeech



  • Bitte helft mir und sagt, was ich falsch hab 😕

    Vielleicht weil Du den Rückgabetyp in der main-Funktion vergessen hast...?



  • Hmm stimmt, dass ist mir nicht aufgefallen, aber das scheint egal zus ein.

    Steht davon ja auch nix in den Errors und es werden auch nciht weniger, wenn ichs ausbesser.Trotzdem THX!



  • 1. Es ist erlaubt in main (und nur in main) das return Statement wegzulassen.
    2. Dein Problem hat damit zu tun, dass bei deinem Projekt Unicode eingestellt ist (default) und desshalb die WinAPI Funktionen, welche Strings (=LPCTSTR) als Argument nehmen auch Unicode Literale erwarten.

    Lösen kannst Du das entweder indem Du bei deinem Projekt Multibyte Characterset (und nicht Unicode) einstellst ODER deine String Literale als Unicode hinschreibst - oder noch besser Du benutzt die breits vorhandenen Macros aus tchar.h.

    Also:
    #include <tchar.h>

    und dann bei jedem String Literal so: anstatt "TEST" einfach _T("TEST") hinschreiben.



  • ich würde jetzt einfach mal behaupten das dein projekt unicode ist und die funktion aber damit nix anfangen kann, solltest also _T("dein text") schreiben das sollte helfen denke ich jetzt mal einfach so



  • Also erstmal DANKE das heißt jetzt aber nciht, dass es geht 😃

    Gut,jetzt sind es 6 Fehler:

    1>Projekt.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__InternetCloseHandle@4" in Funktion ""void __cdecl upload(void)" (?upload@@YAXXZ)".
    1>Projekt.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__FtpPutFileW@20" in Funktion ""void __cdecl upload(void)" (?upload@@YAXXZ)".
    1>Projekt.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__InternetConnectW@32" in Funktion ""void __cdecl upload(void)" (?upload@@YAXXZ)".
    1>Projekt.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__InternetOpenW@20" in Funktion ""void __cdecl upload(void)" (?upload@@YAXXZ)".
    1>LIBCMTD.lib(wincrt0.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_WinMain@16" in Funktion "___tmainCRTStartup".
    1>D:\Programme\C++\Projekt\Debug\Projekt.exe : fatal error LNK1120: 5 nicht aufgelöste externe Verweise.
    

    Diese Fehler hab ich natürlich gegoogelt, dort Stand, ich müsste ein anderes Subsystem festlegen,ALSO: Ich lege ein anderes Subsystem fest (gehe unter Linker und Stelle Subsystem auf CONSOLE)

    Nun, sind es immernoch 5 Errors:

    1>Projekt.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__InternetCloseHandle@4" in Funktion ""void __cdecl upload(void)" (?upload@@YAXXZ)".
    1>Projekt.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__FtpPutFileW@20" in Funktion ""void __cdecl upload(void)" (?upload@@YAXXZ)".
    1>Projekt.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__InternetConnectW@32" in Funktion ""void __cdecl upload(void)" (?upload@@YAXXZ)".
    1>Projekt.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__InternetOpenW@20" in Funktion ""void __cdecl upload(void)" (?upload@@YAXXZ)".
    1>D:\Programme\C++\Projekt\Debug\Projekt.exe : fatal error LNK1120: 4 nicht aufgelöste externe Verweise.
    

    Bitte helft mir! 🙄



  • na du solltest ihm noch sagen das er die Wininet.lib dazu linken soll, sonst kennt er die funktionen nicht, kann man in der MSDN nachlesen. Dann sollten auch die Fehler weg sein.



  • -.- da hätte ich auch selbst drauf kommen können!

    THX LÄUFT!


Anmelden zum Antworten