|
0 / 0 / 0
Регистрация: 01.10.2015
Сообщений: 10
|
||||||||||||||||
Ошибка LNK 2019 - C++ (Visual Studio 2011)06.07.2016, 06:31. Показов 2688. Ответов 14
Метки нет (Все метки)
Доброго времени суток. Помогите пожалуйста разобраться. Не удается запустить проект из 3-х файлов. Проект создавался "пустой". Если весь код написать в одном файле - работает, а если в разных - нет.
Текст файла MyMain.cpp (с функций main) ______________________________________
Текст файла MyLIFO-3.h ______________________________________
______________________________________
1>------ Построение начато: проект: 12345, Конфигурация: Debug Win32 ------ 1> MyLIFO-3.cpp 1>MyMain.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall MyLIFO<char>::MyLIFO<char>(int)" (??0?$MyLIFO@D@@QAE@H@Z) в функции _main 1>MyMain.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall MyLIFO<char>::~MyLIFO<char>(void)" (??1?$MyLIFO@D@@QAE@XZ) в функции _main 1>MyMain.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: char __thiscall MyLIFO<char>::Pop(void)" (?Pop@?$MyLIFO@D@@QAEDXZ) в функции _main 1>MyMain.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: bool __thiscall MyLIFO<char>::Push(char &)" (?Push@?$MyLIFO@D@@QAE_NAAD@Z) в функции _main 1>MyMain.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: bool __thiscall MyLIFO<char>::IsEmpty(void)" (?IsEmpty@?$MyLIFO@D@@QAE_NXZ) в функции _main 1>MyMain.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: bool __thiscall MyLIFO<char>::IsFull(void)" (?IsFull@?$MyLIFO@D@@QAE_NXZ) в функции _main 1>MyMain.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: int __thiscall MyLIFO<char>::Size(void)" (?Size@?$MyLIFO@D@@QAEHXZ) в функции _main 1>MyMain.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: int __thiscall MyLIFO<char>::Capacity(void)" (?Capacity@?$MyLIFO@D@@QAEHXZ) в функции _main 1>D:\юра\школа\12345\Debug\12345.exe : fatal error LNK1120: неразрешенных внешних элементов: 8 ========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
0
|
||||||||||||||||
| 06.07.2016, 06:31 | |
|
Ответы с готовыми решениями:
14
Ошибка D8027 при компилировании в Visual Studio 2019 Шаблон с++ (Ошибка LNK 2019) |
|
2393 / 1913 / 763
Регистрация: 27.07.2012
Сообщений: 5,557
|
|
| 06.07.2016, 12:50 | |
Сообщение было отмечено sv1tlana как решение
Решение
Реализация шаблонных классов должна быть в .h-файле, например, в том же, где класс объявлен.
2
|
|
|
40 / 21 / 3
Регистрация: 27.04.2015
Сообщений: 176
|
|
| 06.07.2016, 13:19 | |
|
0
|
|
|
Модератор
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,237
|
|
| 06.07.2016, 13:23 | |
|
elch10, это общеизвестно. Шаблон нельзя откомпилировать в отдельном файле, т.к. неизвестно как его инстанцировать.
Поэтому, все шаблонные классы целиком помещают в заголовочные файлы. Посмотрите, например, на заголовочные файлы STL.
0
|
|
|
Неэпический
|
|||
| 06.07.2016, 13:26 | |||
|
чтобы оно было видно компилятору при инстанцировании. Если же оно инстанцировано где-то в другом месте, то оно должно быть видно линкеру.
0
|
|||
|
Модератор
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,237
|
|
| 06.07.2016, 13:28 | |
|
Croessmah, не совсем понятно.
Приведите пример, как можно инстанцировать шаблон, находящийся в другом файле.
0
|
|
|
Неэпический
|
||||||||||||||||
| 06.07.2016, 13:30 | ||||||||||||||||
|
zss,
или, например:
1
|
||||||||||||||||
|
Модератор
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,237
|
|
| 06.07.2016, 13:34 | |
|
Кажется понял. Надо компилятор "насильно" заставить инстанцировать соответствующий шаблон.
Для этого и написана функция void bar()
1
|
|
|
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
|
||
| 06.07.2016, 13:45 | ||
|
0
|
||
|
40 / 21 / 3
Регистрация: 27.04.2015
Сообщений: 176
|
||
| 06.07.2016, 14:12 | ||
|
zss, Croessmah, Тогда почему ругается компилятор у sv1tlana?
есть же явное истанцирование:
0
|
||
|
Неэпический
|
|||
| 06.07.2016, 14:15 | |||
|
так что он вполне может здесь создать объект этого класса. А определений шаблоных функций-членов в местах их вызова нет ![]() Значит все вопросы компилятор переложит на линкера, который в свою очередь и пишет
2
|
|||
|
0 / 0 / 0
Регистрация: 01.10.2015
Сообщений: 10
|
|
| 06.07.2016, 16:19 [ТС] | |
|
Croessmah, avgoor, zss и elch10 большое спасибо за Ваши комментарии - очень ценная информация.
Croessmah, подскажите, как вызвать шаблонную функцию в моем конкретном примере в цикле для объекта класса, с использованием явного инстанцирования. Я пробую вот так: while(!ST.template MyLIFO <char> IsFull ()) - подчеркивает (это строка 18 в файле MyMain)
0
|
|
|
0 / 0 / 0
Регистрация: 01.10.2015
Сообщений: 10
|
|
| 06.07.2016, 17:05 [ТС] | |
|
Да, спасибо, я уже так и сделала.
0
|
|
| 06.07.2016, 17:05 | |
|
Помогаю со студенческими работами здесь
15
Работа с tinyxml ошибки LNK 2019 и LNK 2001 LNK 2019 ссылка на неразрешенный внешний символ в функции _main; LNK 1120 неразрешенных внешних элементов: 1
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|