Ошибки компоновщика LNK1120 и LNK2001 - PullRequest
1 голос
/ 08 ноября 2011

Я ненавижу эти ошибки компоновщика, есть идеи, как от них избавиться?

Error   2   fatal error LNK1120: 1 unresolved externals C:\Users\**********\Documents\Visual Studio 2005\Projects\Machine2\Debug\Machine2.exe

и

Error   1   error LNK2001: unresolved external symbol "public: void __thiscall SecondDlg::OnBnClickedButton4(void)" (?OnBnClickedButton4@SecondDlg@@QAEXXZ) SecondDlg.obj

Ответы [ 5 ]

7 голосов
/ 08 ноября 2011

Возможно, ошибка связана с одной из следующих причин:

  • Вы забыли реализовать метод в файле cpp
  • Файл cpp не включен в компиляцию
  • Вы забыли экспортировать свой класс с _declspec(dllexport)
  • Вы не ссылаетесь на библиотеку, в которой находится SecondDlg
5 голосов
/ 08 ноября 2011

public: void __thiscall SecondDlg :: OnBnClickedButton4 (void)

Линкер пытается лучше сказать, что вызов SecondDlg::OnBnClickedButton4(void) не может быть разрешен.Это означает, что он не может найти определение функции-члена из любого исходного файла (точнее, объектного файла), который был скомпилирован.Вы только что предоставили объявление в интерфейсе, но не его определение (то есть реализацию) в любом месте.

1 голос
/ 09 ноября 2011

Я удалил ON_BN_CLICKED(IDC_BUTTON4, &SecondDlg::OnBnClickedButton4) и все другие экземпляры IDC_BUTTON4. Мой компилятор пытался скомпилировать то, чего больше не было.

1 голос
/ 08 ноября 2011

Ну, у меня не так много информации, чтобы понять, что происходит.Вы уверены, что написали метод OnBnClickedButton4?Может быть, только что объявлено.Посмотрите на свои файлы C ++.

Можете ли вы показать нам объявление метода?Можете ли вы дать нам больше информации?

Может быть, вы используете ключевое слово "extern", когда оно не нужно?

0 голосов
/ 06 декабря 2016

Это поможет другим, кто читает эти вопросы и ответы, даже если эта конкретная проблема была решена.

Раньше у меня были эти ошибки компоновщика, и, по всей видимости, устранение использования глобальной переменной в целом было ответом. Использование неконстантных глобальных переменных только сбивает с толку компилятор и компоновщик (и программист), особенно когда размер вашей программы увеличивается.

...