Помилка коштів компоновщика lnk2019
Компонувальнику не вдалося знайти визначення зовнішнього символу "symbol", використовуваного в функції "function".
Існує безліч проблем, які можуть викликати цю помилку. У цьому розділі описано, які допоможуть визначити причину виникнення помилки і знайти рішення проблеми.
Ця помилка може виникати, якщо файл об'єкта або бібліотеки, який містить визначення символу не включений в збірку. Також може виникнути, якщо ім'я символу, шукає компоновщик не збігається з назвою символу у файлі бібліотеки або об'єкт, який визначає його. Це може статися, якщо ім'я в зухвалій коді неправильно вказано, використовує великої літери, використовує інший угоду про виклики або задає різні параметри.
Об'єктний файл або бібліотеку, яка містить визначення символу не пов'язані. У Visual Studio переконайтеся, що вихідний файл, який містить визначення побудови і зв'язати як частина проекту. У командному рядку переконайтеся, що вихідний файл, який містить визначення компілюється і включення в список файлів, щоб зв'язати файл результуючого об'єкта.
Аналогічно, якщо символ визначається у файлі C ++, який буде використовуватися програмою C, у визначенні слід використовувати extern "C".
Символ визначається як статичний і потім використовується поза файлу. У C ++, на відміну від C, глобальні константи мають компоновку static. Щоб обійти це обмеження, можна включити ініціалізації const в заголовок файлу і ввести цей заголовок в CPP-файли або можна привласнити змінної неконстантное значення і використовувати для доступу до неї константну посилання.
Побудова консольного застосування виконується з використанням параметрів для програми Windows. Якщо з'явилося повідомлення про помилку схоже на unresolved external symbol WinMain referenced in function function_name. виконайте компоновку за допомогою / SUBSYSTEM: CONSOLE замість / SUBSYSTEM: WINDOWS. Додаткові відомості про цей параметр і інструкції про те, як поставити це властивість в Visual Studio, см. В статті / SUBSYSTEM (Specify Subsystem).
Автоматичні змінні використовуються за межами їх області. Автоматичні змінні (області видимості функції) можуть використовуватися тільки в області видимості цієї функції. Ці змінні не можуть оголошуватися extern і використовуватися в інших вихідних файлах. Приклад см. В розділі Automatic (Function Scope) Variables.
За допомогою параметра компоновщика / VERBOSE можна визначити, на які файли посилається компоновщик. Це допоможе перевірити, чи включений файл, який містить визначення символу, в збірку.
Службова програма UNDNAME може показувати еквівалентний недекорірованний зовнішній символ для декорованого імені.
Символ оголошений, але не визначений.