#c #visual-c #linker-errors #visual-c -2005
#c #visual-c #ошибки компоновщика #visual-c -2005
Вопрос:
Я ненавижу эти ошибки компоновщика, есть идеи, как я могу от них избавиться?
Error 2 fatal error LNK1120: 1 unresolved externals C:Users**********DocumentsVisual Studio 2005ProjectsMachine2DebugMachine2.exe
и
Error 1 error LNK2001: unresolved external symbol "public: void __thiscall SecondDlg::OnBnClickedButton4(void)" (?OnBnClickedButton4@SecondDlg@@QAEXXZ) SecondDlg.obj
Комментарии:
1. Кстати, это ошибки компоновщика, а не компилятора.
Ответ №1:
Ошибка, вероятно, вызвана одной из следующих причин:
- Вы забыли реализовать метод в
cpp
файле cpp
Файл не включен в компиляцию- Вы забыли экспортировать свой класс с
_declspec(dllexport)
- Вы не ссылаетесь на библиотеку, в которой
SecondDlg
находится
Ответ №2:
общедоступный: недействительный __этот вызов SecondDlg::OnBnClickedButton4(недействительный)
Компоновщик пытается изо всех сил сообщить вам, что вызов SecondDlg::OnBnClickedButton4(void)
не может быть разрешен. Это означает, что он не может найти определение функции-члена из любого исходного файла (точнее, объектного файла), который был скомпилирован. Вы только что предоставили объявление в интерфейсе, но не его определение (т. Е. реализацию) где бы то ни было.
Ответ №3:
Ну, у меня не так много информации, чтобы понять, что происходит. Вы уверены, что написали метод OnBnClickedButton4? Возможно, это просто объявлено. Загляните в свои файлы C .
Можете ли вы показать нам объявление метода? Можете ли вы предоставить нам больше информации?
Может быть, вы используете ключевое слово «extern», когда оно не требуется?
Ответ №4:
Я удалил ON_BN_CLICKED(IDC_BUTTON4, amp;SecondDlg::OnBnClickedButton4)
и все другие экземпляры IDC_BUTTON4. Мой компилятор пытался скомпилировать что-то, чего там больше не было.
Ответ №5:
Это помогло бы другим, кто читает эти вопросы и ответы, даже несмотря на то, что эта конкретная проблема была решена.
У меня были эти ошибки компоновщика раньше, и устранение использования глобальной переменной в целом, казалось, было ответом. Использование неконстантных глобальных переменных только сбивает с толку компилятор и компоновщик (и программиста), особенно по мере увеличения размера вашей программы.