Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
kangarooo
0 / 0 / 0
Регистрация: 01.04.2013
Сообщений: 24
1

Как устранить ошибку LNK2019 при подключении библиотеки журналирования log4c?

28.07.2014, 01:22. Просмотров 819. Ответов 5
Метки нет (Все метки)

Здравствуйте!
Имеется библиотека log4c (для журналирования событий), использую Visual C++ 2008.
При попытке запустить helloworld (имеется в примерах к библиотеке), выдало несколько однотипных ошибок:
C
1
2
3
4
5
6
Ошибка  6   fatal error LNK1120: 5 неразрешенных внешних элементов  C:\Users\Vadim\Documents\Visual Studio 2008\Projects\NewLogger\Debug\NewLogger.exe
Ошибка  3   error LNK2019: ссылка на неразрешенный внешний символ __imp__log4c_init в функции _main NewLogger.obj
Ошибка  1   error LNK2019: ссылка на неразрешенный внешний символ __imp__log4c_fini в функции _main NewLogger.obj
Ошибка  4   error LNK2019: ссылка на неразрешенный внешний символ __imp__log4c_category_get_chainedpriority в функции _log4c_category_log   NewLogger.obj
Ошибка  2   error LNK2019: ссылка на неразрешенный внешний символ __imp__log4c_category_get в функции _main NewLogger.obj
Ошибка  5   error LNK2019: ссылка на неразрешенный внешний символ __imp____log4c_category_vlog в функции _log4c_category_vlog   NewLogger.obj
Библиотека подключена в #include:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include "stdafx.h"
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <stdio.h>
#include "log4c.h"
 
int main(int argc, char** argv)
{
    int rc = 0;
    log4c_category_t* mycat = NULL;
  
    if (log4c_init())
    {
        printf("log4c_init() failed");
        rc = 1;  
    }
    else
    {
        mycat = log4c_category_get("log4c.examples.helloworld");
        log4c_category_log(mycat, LOG4C_PRIORITY_ERROR, "Hello World!");  
        /* Explicitly call the log4c cleanup routine */
        if ( log4c_fini())
        {
            printf("log4c_fini() failed");
        }
    }
    return rc;
}
Никаких .dll и .lib в библиотеке нет.
log4c (log4c-1.2.4) скачан с SourceForge
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.07.2014, 01:22
Ответы с готовыми решениями:

Устранить ошибку клиента библиотеки
/home/user/Рабочий стол/Ubuntu One/Пример 2.c:64:14: ошибка: expected «=», «,», «;», «asm» or...

При подключении библиотеки "fs" консоль бьёт ошибку fs.readFile is not a function
Такая проблема наблюдается как с родной библиотекой так и в библиотеках, которые юзают её....

Как устранить ошибку при добавлении?
Доброй ночи, форумчане! Возникла ошибка при добавлении данных в DBGrid. Заполняю форму для...

Как устранить ошибку при сборке ruby?
Захожу C:\Users\Aydar\Desktop\ruby-2.2.0\win32 запускаю configure.bat пишу nmake Вывод ... ...

Как устранить ошибку при запуске XAMPP на Windows 8?
Всем привет :) Столкнулся с такой проблемой, что при запуске XAMPP на Windows 8, Apache...

5
castorsky
1973 / 1076 / 87
Регистрация: 29.11.2013
Сообщений: 3,354
28.07.2014, 01:41 2
kangarooo, А Вы не могли бы подробно описать Ваши действия? Например: "Скачал файл с такой-то, сделал с ним то и это и т.д.".

Добавлено через 1 минуту
Цитата Сообщение от kangarooo Посмотреть сообщение
Никаких .dll и .lib в библиотеке нет.
Потому что эта фраза наводит на нехорошие догадки.
0
kangarooo
0 / 0 / 0
Регистрация: 01.04.2013
Сообщений: 24
28.07.2014, 09:09  [ТС] 3
скачал с SourceForge архив log4c-1.2.4.tar.gz
по инструкции с SourceForge в cygwin выполнил:
Bash
1
2
3
4
5
$ gzip -dc log4c-1.2.4.tar.gz | tar tvf -
$ cd log4c-1.2.4/
$ ./configure --prefix=/path/of/installation
$ make
$ make install
в папке log4c появилась папка include, в которой содержатся .h файлы.
я скопировал эти файлы в папку с программой, и запустил (возникли некоторые ошибки, которые решались заменой, например #include <log4c.h> на #include "log4c.h" и т.д.)
после устранения этих ошибок появились ошибки линковки:
C
1
error lnk2019 ссылка неразрешенный внешний символ
в таких случаях помогает добавление .lib-файлов, но таковых в log4c нет...

Добавлено через 2 минуты
инструкция гласит что он и к windows дружелюбен:
log4c was successfully compiled and run on the following platforms:

HP-UX release 11.00
Tru 64 release 4.0F and 5.1
Red Hat Linux Intel release 7.x, 8, 9
Red Hat Enterprise Linux 3, 4
Solaris Intel release 8, 9, 10
FreeBSD 6.1-RELEASE
AIX 5.3 (with xlc compiler)
Mac OS X
Windows X
...and other Linux distributions
log4c should compile and run on the following platforms:

The BSD family
MS Windows
http://log4c.sourceforge.net/index.html
0
castorsky
1973 / 1076 / 87
Регистрация: 29.11.2013
Сообщений: 3,354
28.07.2014, 12:38 4
Цитата Сообщение от kangarooo Посмотреть сообщение
в папке log4c появилась папка include, в которой содержатся .h файлы.
Эти файлы нужны для установки библиотеки. Я не знаю насколько cygwin бинарно совместим с windows. В юниксах заголовки лежат в /usr/unclude.
Цитата Сообщение от kangarooo Посмотреть сообщение
в таких случаях помогает добавление .lib-файлов, но таковых в log4c нет..
И быть не должно. Библиотеки доступны по /lib:/usr/lib:/usr/local/lib и т.д. Не факт что они подцепятся MSVS.
Цитата Сообщение от kangarooo Посмотреть сообщение
инструкция гласит что он и к windows дружелюбен
Инструкция также гласит что это исходники, которые нужно скомпилировать. Вы сделали это в оболочке cygwin, а нужно в windows, при чем на страничке офсайта описаны зависимости, читать INSTALL, README. На той же страничке написано что проект должен компилироваться, это значит что никто не дает гарантии что он скомпилируется под BSD, MS Windows.
1
Убежденный
Ушел с форума
Эксперт С++
16145 / 7292 / 1182
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
28.07.2014, 14:50 5
kangarooo, мой вам совет - старайтесь не использовать под Windows
библиотеки, которые заточены только под unix. Как правило, их трудно собирать, у
них куча ненатуральных для Windows зависимостей (cygwin, gnuwin32 и т.п.), и
прочие проблемы, связанные со спецификой платформы (кириллица в путях, например,
или поддержка юникода через wchar_t). Так уж нужен логгер - возьмите тогда
какой-нибудь log4cpp, там хотя бы dsw-файлы есть, которые сразу можно открыть в
"Студии" без лишних хлопот.

Вообще, все хорошие библиотеки должны собираться относительно просто:
поставил то, это, установил путь и вызвал команду такую-то. Все.
Если по-другому - ну его в баню, огребете проблем, не сейчас, так в будущем.
1
cybercitizen
204 / 26 / 5
Регистрация: 22.05.2015
Сообщений: 357
26.05.2015, 01:11 6
Цитата Сообщение от Убежденный Посмотреть сообщение
Так уж нужен логгер - возьмите тогда какой-нибудь log4cpp
Можешь сказать как его использовать в windows? Я чет вообще ничего не понимаю. На оффсайте информации чуть более чем ноль. Для unix понятно, там с путями порядок. А как эту муть собрать для windows и куда она собирается, как ее потом использовать? Открыл проект в msvs, "построил решение", дальше то что? Новый проект, #include <log4cpp/Category.hh> и конечно же ошибка.
0
26.05.2015, 01:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2015, 01:11

Ошибка lnk2019 при подключении к MySQL
Доброго Времени Суток! В общем, я нашел здесь небольшой туториал по взаимодействию с MySQL и...

Как устранить ошибку R6034 при запуске Jass New Gen Pack?
Эта ошибка вылетает только при запуске Jass New Gen Pack.

Можно ли как-то исправить слишком большой размер файла при подключении библиотеки iostream?
Здравия всем! если откомпилировать это: #include &lt;stdio.h&gt; int main() { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru