Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Ошибка компиляции LNK2019

Ответить
Настройки темы
C/C++ - Ошибка компиляции LNK2019

Старожил


Сообщения: 154
Благодарности: 11


Конфигурация

Профиль | Отправить PM | Цитировать


Решил написать небольшой велосипед для работы с форматом BMP. Написал структуры данных, пытаюсь скомпилить - получаю error LNK2019.
Код: http://pastebin.com/cLcJ3mAJ

Отправлено: 15:50, 19-09-2010

 

Ветеран


Сообщения: 3320
Благодарности: 916

Профиль | Отправить PM | Цитировать


belk94 компиляция как раз проходит. LNK это ошибка линковки.
В данном коде void main должна хоть как-то определенна.
Например
void main
{
}

Это избавит в будущем от потенциальной ошибки LNK1561: entry point must be defined
По данной ошибке (LNK2019 unresolved external symbol 'symbol' referenced in function 'function'), возможно пути к Lib не определенны.
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:21, 19-09-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 154
Благодарности: 11

Профиль | Отправить PM | Цитировать


Admiral, что означает "пути к Lib"?

Отправлено: 23:25, 19-09-2010 | #3


Ветеран


Сообщения: 3320
Благодарности: 916

Профиль | Отправить PM | Цитировать


belk94 вот на этом скриншоте строка Additional Library Directories
Скрин отсюда для 2005й версии Visual C++, в 2008 так же.
Добираться так: Tools -> Options -> Projects and Solutions -> VC++ Directories -> Show directories for: -> Library files.

Это всего лишь предположения, если проект состоит только из этого файла, а с путями всё ОК выведется ошибка LNK1561, а не LNK2019.

А какой полностью текст ошибки?

Отправлено: 23:43, 19-09-2010 | #4


Старожил


Сообщения: 154
Благодарности: 11

Профиль | Отправить PM | Цитировать


MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup

А с библиотеками всё в порядке - на этой же Студии уже делал несколько проектов.

Отправлено: 00:48, 20-09-2010 | #5


ИО Капитана Очевидности


Contributor


Сообщения: 5387
Благодарности: 1105

Профиль | Отправить PM | Цитировать


Цитата belk94:
Написал структуры данных, пытаюсь скомпилить - получаю error LNK2019. »
Это значит, что линковщик не может найти код функции в объектном файле. Причины могут быть разными
1. Функция-шаблон реализована в файле .cpp. Поскольку код такой функции создаётся для каждого из параметров по мере использования, её код должен быть помещён в .h
2. Код функции в библиотеке не был скомпилирован по причине неиспользования в самой библиотеке. (лечится добавлением особой команды, которую я уже не помню)
3. Не совпадают параметры вызова функции, указанные по-умолчанию в свойствах проекта программы и подключаемой библиотеки. Во избежание этого всегда надо указывать __fastcall или аналогичную команду.



В*данном проекте вижу следующие нестыковки
1. Отсутствуют параметры вызова у функций
2. Параметры функции main не соответствуют стандартным
3. Методы operator= должны возвращать ссылку на сам объект
Код: Выделить весь код
WORD& operator = (int a)
{
                byte1=a>>8;
                byte2=(a<<8)>>8;
                return *this; // вот так
}

-------
Самое совершенное оружие, которым забиты арсеналы богатых и процветающих наций, может легко уничтожить необразованного, больного, бедного и голодного. Но оно не может уничтожить невежество, болезнь, нищету и голод. (Фидель Кастро)

Почему всех осужденных за измену Родине при Сталине реабилитировали при Горбачёве по отсутствию состава преступления? Потому что при Горбачёве измену Родине перестали считать преступлением.


Отправлено: 07:18, 20-09-2010 | #6


Старожил


Сообщения: 154
Благодарности: 11

Профиль | Отправить PM | Цитировать


Цитата El Scorpio:
Отсутствуют параметры вызова у функций »
А они нужны? Функции будут использоваться так (для примера):
Код: Выделить весь код
WORD a; 
a=10; 
a.print();
Цитата El Scorpio:
Параметры функции main не соответствуют стандартным »
Параметры не будут нужны. Сколько я делал проектов - их нигде не было.

Цитата El Scorpio:
Методы operator= должны возвращать ссылку на сам объект »
То же самое. Пример работающего оператора = для самописной длинной арифметики:
Код: Выделить весь код
    void operator = (Long a)    //приравнять к длинному числу
    {
        for(int i=0;i<LONG_LEN;i++)
            num[i]=a.num[i];
    }

Отправлено: 19:39, 20-09-2010 | #7


ИО Капитана Очевидности


Contributor


Сообщения: 5387
Благодарности: 1105

Профиль | Отправить PM | Цитировать


belk94, конечно, это не так важно, но возвращение результата в функциях operator= (а также +=, -= и т.д.) позволяет использовать его в составных командах.
a = b = c;
F (a += b);
(a -= b).M();


Цитата belk94:
Цитата El Scorpio:
Отсутствуют параметры вызова у функций »
А они нужны? Функции будут использоваться так (для примера): »
А вот это уже важно.
Если в каком-либо файле директивами предпроцессора будут заданы другие параметры вызова функций, то в результате на этапе линковки компилятор не найдёт в объектном модуле нужной функции

-------
Самое совершенное оружие, которым забиты арсеналы богатых и процветающих наций, может легко уничтожить необразованного, больного, бедного и голодного. Но оно не может уничтожить невежество, болезнь, нищету и голод. (Фидель Кастро)

Почему всех осужденных за измену Родине при Сталине реабилитировали при Горбачёве по отсутствию состава преступления? Потому что при Горбачёве измену Родине перестали считать преступлением.


Отправлено: 08:09, 22-09-2010 | #8


Старожил


Сообщения: 154
Благодарности: 11

Профиль | Отправить PM | Цитировать


El Scorpio, у меня слишком простая программа для всего этого.

Отправлено: 18:11, 22-09-2010 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Ошибка компиляции LNK2019

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
C/C++ - При компиляции программы выскакивает ошибка m.s.dos Программирование и базы данных 1 31-05-2009 16:10
FreeBSD - ошибка компиляции ядра 7.1 kirimey Общий по FreeBSD 7 02-05-2009 15:48
Софт/IDE - Помогите новичку, ошибка при компиляции. KEKS-KEKS Программирование и базы данных 6 16-07-2007 22:46
Ошибка при компиляции ядра Junior Penguin Общий по Linux 22 21-11-2005 11:01
Ошибка компиляции ifmail BurzumII Программное обеспечение Linux и FreeBSD 6 09-01-2005 19:54




 
Переход