FTP | C++ | Wysyłanie pliku na serwer | "cannot find -lwininet.h"

0

Witam !
Tworze program które będzie wykonywał określone czynności , następnie zapisywał je do pliku tekstowego a potem przesyłał na mój serwer FTP.
Problem leży w tym że kompilator programu CodeBlocks wywala mi dość dziwny błąd .
Nie mogę nic o nim znaleźć, czy może mi ktoś pomóc ?

Oto część kodu :

#include <iostream>
#include <windows.h>
#include <fstream>
#include <stdio.h>
#include <time.h>
#include <conio.h>
#include <cstring>
#pragma comment (lib, "Wininet.lib");
#include <wininet.h>


using namespace std;

int FTP()
{
    char ftp[]      = "adres";
    char user[]     = "nazwa";
    char password[] = "hasło";
    char localFile[] = "ścieżka do pliku";
    char remoteFile[] = "ścieżka do pliku na FTP";

    HINTERNET hInternet;
    HINTERNET hFtpSession;

    if( InternetAttemptConnect( 0 ) == ERROR_SUCCESS ) cout << "Internet dostepny, wysylanie pliku..\n" << endl;
    else { cout << "Internet niedostepny.\n" << endl; return - 1; }

    hInternet = InternetOpen( NULL, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0 );
    if( hInternet != NULL ) {
        hFtpSession = InternetConnect( hInternet, ftp, INTERNET_DEFAULT_FTP_PORT, user, password, INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0 );
        if( hFtpSession != NULL ) {
            if( FtpPutFile( hFtpSession, localFile, remoteFile, FTP_TRANSFER_TYPE_BINARY, 0 ) ) {
                InternetCloseHandle( hFtpSession );
                InternetCloseHandle( hInternet );
            }
            else {
                cout << "Blad podczas wysylania pliu." << endl;
                return - 1;
            }
        }
        else return - 1;
    }
    else return - 1;
    cout << "Wyslano Plik.\n" << endl;
    return 0;
};

A oto błąd :

user image

user image

Z góry dziękuję za pomoc :)

0

Podajesz liby czy nagłówki? Zdecyduj sie ;]

0
spartanPAGE napisał(a):

Podajesz liby czy nagłówki? Zdecyduj sie ;]

Można jaśniej ? xd
Jestem nowicjusz i lekki nie ogar :P

0

Ni linkuje sie nagłówków, a właśnie to próbujesz zrobić. Wywal .h

0
spartanPAGE napisał(a):

Ni linkuje sie nagłówków, a właśnie to próbujesz zrobić. Wywal .h

Przepraszam ale dalej nie rozumiem ....

Masz na myśli że mam zamienić "#include <wininet.h>" na "#include <wininet>" ?

Jak to usunąć ".h" ?

0
spartanPAGE napisał(a):

http://imgup.pl/di/YDBY/log2.png

No tak tego zdjęcia właśnie też po części nie rozumiem... xD

Chodzi ci abym usunął to ? :

user image

Sory że ci zajmuje czas :P

0

Nie masz linkowac naglowkow

0
spartanPAGE napisał(a):

Nie masz linkowac naglowkow

Ok usunąłem .

Teraz nowe błędy...

user image

user image

0

chodziło o to żebyś usunął .h z flagi linkera którą pokazał kompilator... -lwinnet.h a powinno chyba być -lwinnet

0
Niikelion napisał(a):

chodziło o to żebyś usunął .h z flagi linkera którą pokazał kompilator... -lwinnet.h a powinno chyba być -lwinnet

Ale ja nawet nie wiem co to jest ;/

Ja nie dodaje -lwininet.h tylko wininet.h

Proszę wytłumaczcie mi to w jak najbardziej dziecinny sposób bo dalej nie rozumiem

1

Napisz w linkerze -lwininet

Przecież pisano wyżej co masz robić!

To ma wyglądać tak:
user image

0

Ok wielkie dzięki :P Wysyłanie pliku działa ale mam kolejny problem .
Za pierwszym razem plik się wysyła , za drugim też , za trzecim też , ale za czwartym i każdym kolejnym funkcja " GetLastError() " odpowiada : 12014.
Co jest źle ?

user image

0

Nie znam tej biblioteki, ale nie jest przypadkiem tak, że próbujesz parę razy otwierać to samo coś(nie wiem co to jest). Czyli pootwierasz InternerOpen itp, nie pozamykasz i masz problem.

Wgl Tak, w ogóle ( @n0name_l ) wstawiaj kod, a nie obrazki o.O

0

Błąd 12014 to ERROR_INTERNET_INCORRECT_PASSWORD. Zajrzyj do wininet.h.

0

Hasło jest na 100% dobre .
A może muszę faktycznie w jakiś sposób zamknąć poprzednie połączenie albo po prostu nie otwierać nowego.
Czy jest funkcja zamykająca połączenie ?

0

Chyba lepiej nie zamykać niż otwierać i zamykać co chwilę. Na msdn jest podana funkcja do zamykania. Zachęcam do zajrzenia.
Po co ten rar? Kod wrzucaj do posta

0

Ok z tym sobie już poradziłem ale teraz mam nowy error : 6
Co on oznacza ?

0

Wrzuć tutaj kod źródłowy albo chociaż zrzut ekranu błedu kompilacji bo skad mamy widzieć o którą linijke chodzi

0
ASmf napisał(a):

Wrzuć tutaj kod źródłowy albo chociaż zrzut ekranu błedu kompilacji bo skad mamy widzieć o którą linijke chodzi

Nie chodzi mi o błąd kompilacji.
Program się kompiluje lecz funkcja " GetLastError() " zwraca błąd o numerze " 6 "

int FTP()
{

    cout << "Rozpoczynanie wyslania pliku" << endl;

    HINTERNET hInternet;
    HINTERNET hFtpSession;

    if (wysyl == 1)
    {
        if (!FtpPutFile(hFtpSession, "#######", "#######", FTP_TRANSFER_TYPE_BINARY, 0))
        {
            cout << "Error_1: " << GetLastError() << endl;
        }
        else cout << "Pomyslnie wyslano plik" << endl;
    }
    else
    {
        hInternet = InternetOpen(NULL, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
        if (hInternet == NULL)
        {
            cout << "Error_2: " << GetLastError() << endl;
        }
        else
        {
            wysyl = 1;
            hFtpSession = InternetConnect(hInternet, "########", INTERNET_DEFAULT_FTP_PORT, "#######", "#######", INTERNET_SERVICE_FTP, 0, 0);
            if (hFtpSession == NULL)
            {
                cout << "Error_3: " << GetLastError() << endl;
            }
            else
            {
                if (!FtpPutFile(hFtpSession, "#########", "########", FTP_TRANSFER_TYPE_BINARY, 0))
                {
                    cout << "Error_4: " << GetLastError() << endl;
                }
                else cout << "Pomyslnie wyslano plik" << endl;
            }
        }
    }
}

user image

0
amddell napisał(a):

https://msdn.microsoft.com/en-us/library/windows/desktop/ms681382%28v=vs.85%29.aspx

ERROR_INVALID_HANDLE
6 (0x6)
The handle is invalid.

Możesz mi pomóc ?

Co to oznacza :P

Tak jak już pisałem jestem początkujący

1

Czego z tego komunikatu błędu nie rozumiesz? The handle is invalid znaczy właśnie to, co napisane :|
Nie inicjujesz zmiennej hFtpSession, przez co otrzymujesz ERROR_INVALID_HANDLE.

0

Ok wreszcie się udało :)
Dziękuje wszystkim za pomoc !

1 użytkowników online, w tym zalogowanych: 0, gości: 1