|
0 / 0 / 0
Регистрация: 01.12.2015
Сообщений: 1
|
||||||||||||||||
Ошибки в VS 2019: LNK2019 и LNK 112003.05.2019, 21:57. Показов 7026. Ответов 14
Привет, форумчане! Не могу исправить четыре ошибки:
~lab_1 header.h
0
|
||||||||||||||||
| 03.05.2019, 21:57 | |
|
Ответы с готовыми решениями:
14
Выдает ошибку (LNK 2019) в коде Ошибка LNK 2019: ссылка на неразрешенный внешний символ LNK 2019 и extern "C" |
|
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
|
|||
| 04.05.2019, 01:02 | |||
|
Добавлено через 4 минуты И что у тебя .cpp в ресурсах делают? Это source, а не resource.
0
|
|||
|
0 / 0 / 0
Регистрация: 19.09.2021
Сообщений: 11
|
||||||||||||||||
| 19.09.2021, 14:00 | ||||||||||||||||
|
У меня похожая проблема.
Попытка вынести реализацию шаблона класса в отдельный файл (Test.h, Test.cpp) приводит к ошибке на этапе сборки. Если перенести код из Test.cpp в MainTest.cpp к функции main(), то сборка происходит без ошибок. Если отказаться от шаблона, а прописать для int, то сборка тоже происходит без ошибок. Ошибка LNK2019 ссылка на неразрешенный внешний символ "public: __thiscall Test<int>::Test<int>(int)" (??0?$Test@H@@QAE@H@Z) в функции _main. Test C:\Users\User\source\repos\Test\Test\Tes tMain.obj 1 https://github.com/sergeyrokhin/Test В случае, если удалю этот тестовый репозиторий: Test.h
0
|
||||||||||||||||
|
фрилансер
6440 / 5634 / 1127
Регистрация: 11.10.2019
Сообщений: 14,980
|
|
| 19.09.2021, 14:32 | |
|
1
|
|
|
0 / 0 / 0
Регистрация: 19.09.2021
Сообщений: 11
|
||||||
| 19.09.2021, 15:10 | ||||||
|
Я подозревал, что для использования класса компилятор должен создать по шаблону соответствующие определения.
Но не понятно было, почему бы компилятору не посмотреть во все модули и найти все используемые типы. Получается, что требуется явно указать, какие типы будут использоваться Решение: достаточно в модуль Test.cpp добавить строку
https://stackoverflow.com/ques... eader-file
0
|
||||||
|
фрилансер
6440 / 5634 / 1127
Регистрация: 11.10.2019
Сообщений: 14,980
|
|
| 19.09.2021, 15:38 | |
|
rokhin, но тогда все используемые типы так придётся в этом месте перечислить. Если такое решение устраивает, то ок
https://onlinegdb.com/3pJ-YGzucq
0
|
|
|
0 / 0 / 0
Регистрация: 19.09.2021
Сообщений: 11
|
|
| 19.09.2021, 15:51 | |
|
Да, перечислять - это плохое решение.
А как заставить компилятор искать во всех модулях упоминания экземпляров шаблона?
0
|
|
|
фрилансер
6440 / 5634 / 1127
Регистрация: 11.10.2019
Сообщений: 14,980
|
|
| 19.09.2021, 15:56 | |
|
rokhin, никак
Шаблон не генерирует кода, пока его не использовали для определения Если прописывать типы нет возможности, то придётся оставить весь шаблон в заголовке
0
|
|
|
0 / 0 / 0
Регистрация: 19.09.2021
Сообщений: 11
|
|
| 19.09.2021, 18:21 | |
|
А почему компилятор, увидев использование шаблона, не может скомпилировать для этого использования соответствующую реализацию?
0
|
|
|
0 / 0 / 0
Регистрация: 19.09.2021
Сообщений: 11
|
|
| 20.09.2021, 11:08 | |
|
Алексей1153, Получается, что придется *.cpp превратить в *.h
т.е. *.cpp не нужны? И ещё. Если будет много модулей cpp, где будет использоваться этот заголовочный файл, то в каждом модуле будет компилироваться своя функция?
0
|
|
|
фрилансер
6440 / 5634 / 1127
Регистрация: 11.10.2019
Сообщений: 14,980
|
||
| 20.09.2021, 11:14 | ||
|
rokhin, да, весь код шаблона придётся перенести в заголовок
Добавлено через 3 минуты в каждом cpp будет компилиться один экземпляр функции каждого типа аргумента
0
|
||
|
Вездепух
12919 / 6787 / 1817
Регистрация: 18.10.2014
Сообщений: 17,169
|
|||
| 21.09.2021, 17:15 | |||
|
А вы предлагаете "спрятать" определение шаблона куда-то в .cpp файл. Из чего компилятор будет "компилировать реализацию", если теперь он не видит определение шаблона?
1
|
|||
|
0 / 0 / 0
Регистрация: 19.09.2021
Сообщений: 11
|
|
| 21.09.2021, 17:40 | |
|
почему бы не поискать определение шаблона в модулях проекта?
Наверняка есть этому причина, и я уже смирился, что код будет написан в заголовочном файле. Но это размещение портит хорошую идею шаблона, и модульности проекта, и будет компилироваться одинаковый код для всех модулей, где будет встречаться использование шаблона. Добавлено через 3 минуты ну если сборщик удалит, то молодец. но почему бы не "докомпилировать" то, что не нашел.
0
|
|
|
Вездепух
12919 / 6787 / 1817
Регистрация: 18.10.2014
Сообщений: 17,169
|
|||
| 21.09.2021, 18:01 | |||
.cpp файлы), которые с испокон веков компилируются строго независимо, тщательно изолированно от любых других единиц трансляции. Компилятор не может ничего нигде "искать". Компилятор не имеет права даже знать о существовании какие-то других единиц трансляции. Это важнейший фундаментальный принцип - принцип независимой трансляции - на котором построен весь процесс компиляции в С и С++. Знание о всех компонентах программы доступно только линкеру, но не компилятору. Компилятор всегда работает в изолированной "песочнице": в единственной единице трансляции. Поддержка модулей в С++ появилась в С++20, но это совсем другая история. Добавлено через 4 минуты Альтернативные реализации когда-то существовали (Sun Solaris), в которых шаблоны компилировались в несколько проходов: первым проходом просто анализировался исходный код и коллекционировались все версии шаблонов, которые фактически понадобятся, вторым проходом генерировался фактический код для них, сразу в единственном экземпляре. Но это делалось в первую очередь для того, чтобы не тратить производительность на генерацию повторяющегося кода. Однако с ростом производительности платформ такая экономия оказалась не нужной. Проще просто тупо сгенерировать множество копий кода, а потом вычистить дубликаты. (Плюс у вас еще есть явное инстанцирование для оптимизации этого процесса, если вы захотите этим заняться).
0
|
|||
|
0 / 0 / 0
Регистрация: 19.09.2021
Сообщений: 11
|
|
| 09.09.2022, 09:19 | |
|
Проблема компилятора и сборщика мне стала понятна из обсуждений.
И мне тоже не сильно помогли советы гуру. Но сегодня нашел ссылку в документации Microsoft, которая всё объяснила, предложила два способа решения и дала рекомендации по предпочтениям этих способов. Документация: https://docs.microsoft.com/ru-... -templates
0
|
|
| 09.09.2022, 09:19 | |
|
Помогаю со студенческими работами здесь
15
Устранение ошибки LNK2019
LNK 2019 ссылка на неразрешенный внешний символ в функции _main; LNK 1120 неразрешенных внешних элементов: 1 LNK 1120 & LNK2019 (WinAPI) Работа с tinyxml ошибки LNK 2019 и LNK 2001 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
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 .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|