Помилка коштів компоновщика 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 може показувати еквівалентний недекорірованний зовнішній символ для декорованого імені.

Символ оголошений, але не визначений.