Question

Je souhaite utiliser libgadu (bibliothèque de protocole de messagerie instantanée) sous Visual Studio 2008. J'ai téléchargé libgadu http://toxygen.net/libgadu/files/ libgadu-1.8.2.tar.gz et sous cygwin je l'ai compilé - ./configure, make, make install. Le fichier libgadu.h qui est apparu dans le dossier d’inclusion que j’ai copié dans un autre dossier marqué dans le répertoire VS en tant que répertoire de fichiers inclus.

Je voulais compiler le code à partir de la documentation

#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");
}

Pendant la compilation, je reçois deux erreurs:

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

Que dois-je en faire?

Était-ce utile?

La solution

Vous devez localiser le fichier DLL et LIB compilé, ou simplement le fichier LIB s'il a été compilé dans une bibliothèque statique. Les fichiers seront probablement nommés libgadu.dll et libgadu.lib.

Une fois que vous en avez, vous pouvez demander à Visual Studio de créer un lien avec le fichier LIB en sélectionnant Propriétés du projet et en localisant les dépendances supplémentaires dans les paramètres de l'éditeur de liens.

Ajoutez simplement libgadu à la liste des dépendances supplémentaires pour toutes les configurations.

Autres conseils

Comme Frank l'a déjà dit, cela signifie généralement qu'une bibliothèque (.lib ou .dll) n'est pas liée. Cependant, si une compilation réussie ne crée pas de fichiers .dll ou .lib, le cas le plus probable est que les systèmes de compilation entre Cygwin et VS ne sont pas synchronisés.

Plus précisément, un fichier n'est pas référencé dans le fichier de projet VS. J'ai l'impression que c'est libgagdu.c une fonction gg_login définie dans il.

Ajoutez simplement ce fichier au projet et reconstruisez-le. Si cela fonctionne, contactez les développeurs de libgadu afin qu’ils puissent le réparer.

C'est étrange, car pendant ./configure, make dans Cygwin, il ne crée aucun fichier .dll et .lib.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top