Вопрос

Я хочу использовать libgadu (библиотека протокола обмена мгновенными сообщениями) под Visual Studio 2008. Я скачал libgadu http://toxygen.net/libgadu/files/ libgadu-1.8.2.tar.gz и под cygwin я его скомпилировал - ./configure, make, make install. Файл libgadu.h, который появляется в папке include, я скопировал в другую папку, помеченную в VS как каталог Incisting files.

Я хотел скомпилировать код из документации

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

Во время компиляции я получаю две ошибки:

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

Что мне с этим делать?

Это было полезно?

Решение

Вам нужно найти скомпилированный файл DLL и LIB или просто файл LIB, если он был скомпилирован в статическую библиотеку. Файлы, вероятно, будут называться libgadu.dll и libgadu.lib.

Когда они у вас есть, вы можете указать Visual Studio связать их с файлом LIB, выбрав «Свойства проекта» и выбрав «Дополнительные зависимости» в настройках компоновщика.

Просто добавьте libgadu в список дополнительных зависимостей для всех конфигураций.

Другие советы

Как уже сказал Фрэнк, это обычно означает, что библиотека (.lib или .dll) не связана с. Однако, если успешная компиляция не создает файлы .dll или .lib, наиболее вероятным случаем является то, что системы сборки между Cygwin и VS не синхронизированы.

В частности, на файл не ссылаются в файле проекта VS. У меня такое ощущение, что это libgagdu.c , поскольку в gg_login определена функция, определенная в он.

Просто добавьте этот файл в проект и перестройте. Если это работает, обратитесь к разработчикам libgadu, чтобы они могли исправить это на своем конце.

Это странно, потому что во время ./configure make в Cygwin не создает никаких файлов .dll и .lib.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top