1

私はこれらのリンカーエラーが嫌いですが、どうすればそれらを取り除くことができますか?

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
4

5 に答える 5

7

このエラーは、次のいずれかの原因で発生する可能性があります。

  • cppファイルにメソッドを実装するのを忘れました
  • ファイルはcppコンパイルに含まれていません
  • クラスをエクスポートするのを忘れました_declspec(dllexport)
  • SecondDlg存在するライブラリに対してリンクしていません
于 2011-11-08T13:45:58.363 に答える
5

public: void __thiscall SecondDlg::OnBnClickedButton4(void)

SecondDlg::OnBnClickedButton4(void)リンカは、 への呼び出しを解決できないことを伝えようとしています。つまり、コンパイルされたソース (正確にはオブジェクト ファイル) ファイルからメンバー関数の定義を見つけることができません。インターフェイスで宣言を提供しただけですが、定義(つまり、実装)はどこにもありません。

于 2011-11-08T13:45:33.270 に答える
1

何が起こっているのかを理解するための情報はあまりありません。OnBnClickedButton4メソッドを作成しましたか?たぶん宣言されたばかりです。C++ファイルを調べます。

メソッドの宣言を教えていただけますか?詳細を教えてください。

必要のないときにキーワード「extern」を使用しているのではないでしょうか。

于 2011-11-08T13:42:03.003 に答える
1

ON_BN_CLICKED(IDC_BUTTON4, &SecondDlg::OnBnClickedButton4)IDC_BUTTON4 の他のすべてのインスタンスを削除しました。私のコンパイラは、もう存在しないものをコンパイルしようとしていました。

于 2011-11-09T09:48:23.383 に答える
0

これは、この特定の問題が解決されたとしても、この Q&A を読んでいる他の人を助けるでしょう。

以前にこれらのリンカ エラーが発生したことがあり、一般的にグローバル変数の使用を排除することが答えのように思われました。非 const グローバル変数の使用は、特にプログラムのサイズが大きくなると、コンパイラとリンカ (およびプログラマ) を混乱させるだけです。

于 2016-12-06T03:51:08.963 に答える