Я хочу использовать libgadu (библиотеку протокола обмена мгновенными сообщениями) в Visual Studio 2008. Я загрузил libgadu http://toxygen.net/libgadu/files/libgadu-1.8.2.tar.gz и скомпилировал его под cygwin - ./configure, make, make install. Файл libgadu.h, который появляется во включаемой папке, я скопировал в другую папку, которая помечена в VS как каталог включаемых файлов.
Я хотел скомпилировать код из документации
#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(¶metry, 0, sizeof(parametry));
parametry.uin = 12345;
parametry.password = password;
parametry.async = 1;
parametry.status = GG_STATUS_INVISIBLE;
sesja = gg_login(¶metry);
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 в список дополнительных зависимостей для всех конфигураций.
Это странно, потому что во время ./configure, make в Cygwin он не создает никаких файлов .dll и .lib.
Как уже сказал Фрэнк, это обычно означает, что библиотека (.lib или .dll) не связывается. Однако, если успешная компиляция не создает файлы .dll или .lib, наиболее вероятным случаем является то, что системы сборки между Cygwin и VS не синхронизированы.
В частности, файл не упоминается в файле проекта VS. Мне кажется, что это сам libgagdu.c, поскольку в нем определена функция gg_login.
Просто добавьте этот файл в проект и перестройте. Если это сработает, свяжитесь с разработчиками libgadu, чтобы они могли исправить это на своей стороне.
Символ может находиться в файле .o (или .obj) в результате компиляции файла .c.