我想写一个简单的dialog程序 结果出现下面的错误:
cParkApp.obj : error LNK2001: unresolved external symbol "public: __thiscall cParkDlg::cParkDlg(class wxWindow *,int,class wxString const &,class wxPoint const &,class wxSize const &,long)" (??0cParkDlg@@QAE@PAVwxWindow@@HABVwxString@@ABVwxPoint@@ABVwxSize@@J@Z)
Debug/park.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
代码如下:
// cParkDlg.h:
#include <wx/dialog.h>
class cParkDlg : public wxDialog
{
public:
cParkDlg();
virtual ~cParkDlg();
cParkDlg(wxWindow* parent,
wxWindowID id = wxID_ANY,
const wxString& name = wxT("title"),
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long stytle = wxCAPTION|wxRESIZE_BORDER|wxSYSTEM_MENU );
};
// cParkApp.h:
#include <wx/app.h>
#include <wx/wx.h>
class cParkApp : public wxApp
{
public:
cParkApp();
virtual ~cParkApp();
virtual bool OnInit();
//DECLARE_EVENT_TABLE()
};
// cParkDlg.cpp:
#include "cParkDlg.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
cParkDlg::cParkDlg()
{
}
cParkDlg::~cParkDlg()
{
}
// cParkApp.cpp:
#include "cParkApp.h"
#include "cParkDlg.h"
//BEGIN_EVENT_TABLE(cParkApp, wxApp)
//END_EVENT_TABLE()
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
cParkApp::cParkApp()
{
}
cParkApp::~cParkApp()
{
}
///////////////////////////////////////////////////////////////////////
IMPLEMENT_APP(cParkApp);
///////////////////////////////////////////////////////////////////////
bool cParkApp::OnInit()
{
cParkDlg dlg = new cParkDlg(NULL);
if (dlg.ShowModal() == wxID_OK)
{
}
else if (dlg.ShowModal() == wxID_CANCEL)
{
}
return true;
}
我是个菜鸟 初步接触C++和WX ,代码如有错误希望见谅。
error LNK2001: unresolved external symbol Topic is solved
Re: error LNK2001: unresolved external symbol
你为cParkDlg声明了两个构造函数:
一个不带参数的cParkDlg()
另一个是带有参数的
cParkDlg(wxWindow* parent,
wxWindowID id = wxID_ANY,
const wxString& name = wxT("title"),
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long stytle = wxCAPTION|wxRESIZE_BORDER|wxSYSTEM_MENU );
你在app中使用这一句的时候
cParkDlg dlg = new cParkDlg(NULL);
编译器为为cParkDlg的构造函数匹配到了带参数的构造函数,并在导出符号表中为dlg对象指定了构造函数的符号(也就是public: __thiscall cParkDlg::cParkDlg(class wxWindow *...........
但是这个带参数的构造函数并没有被定义,链接器找不到对应的构造方法,自然就会报那个错误
解决的方法就是你为cParkDlg那个带参数的构造函数添加定义,这是c++的基础知识之一
一个不带参数的cParkDlg()
另一个是带有参数的
cParkDlg(wxWindow* parent,
wxWindowID id = wxID_ANY,
const wxString& name = wxT("title"),
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long stytle = wxCAPTION|wxRESIZE_BORDER|wxSYSTEM_MENU );
你在app中使用这一句的时候
cParkDlg dlg = new cParkDlg(NULL);
编译器为为cParkDlg的构造函数匹配到了带参数的构造函数,并在导出符号表中为dlg对象指定了构造函数的符号(也就是public: __thiscall cParkDlg::cParkDlg(class wxWindow *...........
但是这个带参数的构造函数并没有被定义,链接器找不到对应的构造方法,自然就会报那个错误
解决的方法就是你为cParkDlg那个带参数的构造函数添加定义,这是c++的基础知识之一
Re: error LNK2001: unresolved external symbol
恩 谢谢你 我对c++和wxwidgets不是很熟悉,一些常识的东西有些模糊。Fumino wrote:你为cParkDlg声明了两个构造函数:
一个不带参数的cParkDlg()
另一个是带有参数的
cParkDlg(wxWindow* parent,
wxWindowID id = wxID_ANY,
const wxString& name = wxT("title"),
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long stytle = wxCAPTION|wxRESIZE_BORDER|wxSYSTEM_MENU );
你在app中使用这一句的时候
cParkDlg dlg = new cParkDlg(NULL);
编译器为为cParkDlg的构造函数匹配到了带参数的构造函数,并在导出符号表中为dlg对象指定了构造函数的符号(也就是public: __thiscall cParkDlg::cParkDlg(class wxWindow *...........
但是这个带参数的构造函数并没有被定义,链接器找不到对应的构造方法,自然就会报那个错误
解决的方法就是你为cParkDlg那个带参数的构造函数添加定义,这是c++的基础知识之一