Domanda

Voglio usare libgadu (libreria di protocollo di messaggistica istantanea) in Visual Studio 2008. Ho scaricato libgadu http://toxygen.net/libgadu/files/ libgadu-1.8.2.tar.gz e sotto cygwin l'ho compilato - ./configure, make, make install. Il file libgadu.h che è apparso nella cartella include l'ho copiato in un'altra cartella contrassegnata in VS come directory dei file inclusi.

Volevo compilare il codice dalla documentazione

#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <libgadu.h>

using namespace std;

int main(void)
{
    char password[]= "haslo";
    struct gg_session *sesja;
    struct gg_login_params parametry;
    struct gg_event *zdarzenie;

    memset(&parametry, 0, sizeof(parametry));
    parametry.uin = 12345;
    parametry.password = password;
    parametry.async = 1;
    parametry.status = GG_STATUS_INVISIBLE;


    sesja = gg_login(&parametry);
    if (!sesja) {
        cout << "Can't connect" << endl;
       exit(1);
    }

    system("PAUSE");
}

Durante la compilazione ricevo due errori:

Error   1   error LNK2019: unresolved external symbol _gg_login referenced in function _main    1.obj
Error   2   fatal error LNK1120: 1 unresolved externals 

Cosa dovrei farci?

È stato utile?

Soluzione

È necessario individuare il file DLL e LIB compilato o solo il file LIB se è stato compilato in una libreria statica. I file saranno probabilmente chiamati libgadu.dll e libgadu.lib.

Una volta che li hai, puoi indicare a Visual Studio di collegarsi al file LIB selezionando Proprietà del progetto e individuando le Dipendenze aggiuntive nelle impostazioni di Linker.

Basta aggiungere libgadu all'elenco delle dipendenze aggiuntive per Tutte le configurazioni.

Altri suggerimenti

Come Frank ha già detto, questo di solito significa che una libreria (.lib o .dll) non viene collegata. Tuttavia, se una compilazione riuscita non crea file .dll o .lib, il caso più probabile è che i sistemi di compilazione tra Cygwin e VS non siano sincronizzati.

In particolare, non viene fatto riferimento a un file nel file di progetto VS. Ho la sensazione che sia libgagdu.c in quanto esiste una funzione gg_login definita in esso.

Basta aggiungere quel file al progetto e ricostruire. Se funziona, contatta gli sviluppatori di libgadu in modo che possano risolverli dalla loro parte.

È strano, perché durante ./configure, crea in Cygwin, non crea alcun file .dll e .lib.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top