Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Error LNK2019 Visual studio
Forum - C/C++ - Error LNK2019 Visual studio - Pagina 2

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 17:51
Sabato, 23/02/2013
Testo quotato

Postato originariamente da TheDarkJuster:

Fai il debug, riga per riga finchè scopri cosa non va



Guarda che e' tutto normale, non c'e' niente che non va...

Il debugger semplicemente ti sta avvisando che non e' in grado di caricare i files di debug per le librerie citate (ovviamente, perche' non sono disponibili nel sistema). Quando compili in Release invece che Debug gli avvisi dovrebbero sparire.

Ultima modifica effettuata da pierotofy il 23/02/2013 alle 17:53


Il mio blog: https://piero.dev
PM Quote
Avatar
pocho183 (Normal User)
Rookie


Messaggi: 30
Iscritto: 22/02/2013

Segnala al moderatore
Postato alle 17:56
Sabato, 23/02/2013
il codice è di seguito:
quando eseguo il debug mi da l'output postato precedentemente QUI

/* Client.c */

#include <winsock.h>
#include <stdlib.h>
#include <stdio.h>
#define MAX_LINE       (1000)

int ParseCmdLine(int argc, char *argv[], char **szAddress, char **szPort);

int main(int argc, char *argv[]) {
        #pragma comment(lib, "ws2_32.lib") // Risolve problemi con il Linker tipo LNK2019.
        printf("Avvio client in corso...\n");
        WSADATA   wsaData;
        u_long    nRemoteAddr;
        short int port;                  /*  port number               */
        char     *szAddress;             /*  Holds remote IP address   */
        char     *szPort;                /*  Holds remote port         */
        char     *endptr;                /*  for strtol()              */
        struct sockaddr_in target;
        struct sockaddr_in accepted;
        struct      hostent *hp;
        char buffer[MAX_LINE];      /*  character buffer          */
        hp=NULL;

            /*  Get command line arguments  */

    ParseCmdLine(argc, argv, &szAddress, &szPort);///////////////////////////////////////////////////////////    QUI

     /*  Set the remote port  */

    port = strtol(szPort, &endptr, 0);
    if ( *endptr )
    {
        printf("client: porta non riconosciuta.\n");
        exit(EXIT_FAILURE);
    }
    

    if (WSAStartup(MAKEWORD(1,1), &wsaData) != 0)
    {
        printf("errore in WSAStartup()\n");
        exit(EXIT_FAILURE);
    }

        if (WSAStartup(MAKEWORD(1,1), &wsaData) != 0) {  // Affinchè, windows utilizzi i socket devo mandare in startup il layer dei socket
        printf("errore in WSAStartup()\n");
        exit(EXIT_FAILURE);
    }
                /* Creo il socket */
        SOCKET sock;
        SOCKET newSock;
        printf("\nCreazione socket in corso...");
        sock=socket(AF_INET, SOCK_STREAM, 0);

        /*  Inizializzo la struttura  */

        memset(&target, 0, sizeof(target));
        target.sin_family = AF_INET;
        target.sin_port = htons(port);

        /*  Set the remote IP address  */

    nRemoteAddr = inet_addr(szAddress);
    if (nRemoteAddr == INADDR_NONE)
    {
        printf("client: indirizzo IP non valido.\nclient: risoluzione nome...");
        if ( (hp=gethostbyname(szAddress)) == 0)
        {
            printf("fallita.\n");
              exit(EXIT_FAILURE);
        }
        printf("riuscita.\n\n");
        nRemoteAddr = *((u_long *)hp->h_addr_list[0]);
    }
    target.sin_addr.s_addr = nRemoteAddr;
    
    /*  Connessione  */

    if ( connect(sock, (struct sockaddr *) &target, sizeof(target) ) == SOCKET_ERROR )
    {
        printf("client: errore durante la connect.\n");
        exit(EXIT_FAILURE);
    }


        /*  Comunicazione  */

    printf("Inserire la stringa da spedire: ");
    do {
        scanf("%s",buffer);
        send(sock,buffer,strlen(buffer),0);
    } while (strcmp(buffer,"quit")!=0);
    recv(sock,buffer,MAX_LINE-1,0);
    printf("Risposta del server: %s\n",buffer);

    WSACleanup();
    return EXIT_SUCCESS;
}


int ParseCmdLine(int argc, char *argv[], char **szAddress, char **szPort)
{
    int n = 1;

    while ( n < argc )
    {
        if ( !strncmp(argv[n], "-a", 2) || !strncmp(argv[n], "-A", 2) )
        {
            *szAddress = argv[++n];
        }
        else
            if ( !strncmp(argv[n], "-p", 2) || !strncmp(argv[n], "-P", 2) )
            {
                *szPort = argv[++n];
            }
            else
                if ( !strncmp(argv[n], "-h", 2) || !strncmp(argv[n], "-H", 2) )
                {
                    printf("Sintassi:\n\n");
                    printf("    client -a (indirizzo server) -p (porta del server) [-h].\n\n");
                    exit(EXIT_SUCCESS);
                }
        ++n;
    }
    if (argc==1)
    {
           printf("Sintassi:\n\n");
        printf("    client -a (indirizzo server) -p (porta del server) [-h].\n\n");
        exit(EXIT_SUCCESS);
    }
    return 0;
}

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 0:17
Domenica, 24/02/2013
scusa, non avevo visto che il codice di ritorno era 0, c' è, mi sembrava di aver visto un -1, asd. Comunque, mi pare un po strano il fatto che tu abbia scritto realmente quel codice, sinceramente, hai scritto tutta quella roba sperando che funzioni?

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 16:51
Domenica, 24/02/2013
TheDarkJuster, ma che stai dicendo?


Il mio blog: https://piero.dev
PM Quote
Avatar
pocho183 (Normal User)
Rookie


Messaggi: 30
Iscritto: 22/02/2013

Segnala al moderatore
Postato alle 18:41
Domenica, 24/02/2013
Quindi lasciando stare il debug, quando ottengo questo
Sul client mi da questo output:
'Client.exe': caricato 'C:\Windows\SysWOW64\ntdll.dll', Impossibile trovare o aprire il file PDB
'Client.exe': caricato 'C:\Windows\SysWOW64\kernel32.dll', Impossibile trovare o aprire il file PDB
'Client.exe': caricato 'C:\Windows\SysWOW64\KernelBase.dll', Impossibile trovare o aprire il file PDB
'Client.exe': caricato 'C:\Windows\SysWOW64\ws2_32.dll', Impossibile trovare o aprire il file PDB
'Client.exe': caricato 'C:\Windows\SysWOW64\msvcr100d.dll', Simboli caricati.
'Client.exe': caricato 'C:\Windows\SysWOW64\rpcrt4.dll', Impossibile trovare o aprire il file PDB
'Client.exe': caricato 'C:\Windows\SysWOW64\nsi.dll', Impossibile trovare o aprire il file PDB
'Client.exe': caricato 'C:\Windows\SysWOW64\sspicli.dll', Impossibile trovare o aprire il file PDB
'Client.exe': caricato 'C:\Windows\SysWOW64\cryptbase.dll', Impossibile trovare o aprire il file PDB
'Client.exe': caricato 'C:\Windows\SysWOW64\sechost.dll', Impossibile trovare o aprire il file PDB
'Client.exe': caricato 'C:\Windows\SysWOW64\bcryptprimitives.dll', Impossibile trovare o aprire il file PDB
Il programma '[1264] Client.exe: Nativo' è terminato con il codice 0 (0x0).


significa che il programma è corretto, però client server non comunicano, mi appare un'immagine nera e si richiude subito.

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 20:53
Domenica, 24/02/2013
Come lo stai lanciando il programma? Guarda che ci devi passare i parametri da linea di comando...

client -a <IP> -p <porta>

E' chiaro che hai copiato e incollato questo codice senza aver capito come funziona... ti consiglio di leggerlo piu' attentamente (e cercare di capire come funziona). Se hai dubbi chiedi.


Il mio blog: https://piero.dev
PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 21:17
Domenica, 24/02/2013
Ho detto ESATTAMENTE ciò che hai appena detto tu piero, che secondo me è tutto copiato. Non ci credo che lui abbia scritto tutto quel codice e non lo abbia provato prima, ma solo a progetto finito.

Ultima modifica effettuata da il 24/02/2013 alle 21:22
PM Quote
Avatar
pocho183 (Normal User)
Rookie


Messaggi: 30
Iscritto: 22/02/2013

Segnala al moderatore
Postato alle 23:06
Domenica, 24/02/2013
il programma lo lancio (avendo aperto con console) con f5.(non so cosa intendi)

il fatto del -a e -p di client e port, sono specificati nel ParseCmdLine.

Come si passano i parametri da linea di comando.

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo