wxTheApp 问题:使用 msvc10 未声明标识符

问题描述 投票:0回答:2

该指针要包含哪个头文件?我想制作一个简单的对话框,有两个按钮“Hello world”和“Close”。但对于 OnClose 函数,我在其中输入了 wxTheApp->Exit(),我的 msvc10 编译器显示“未声明的标识符:wxTheApp”。我也在程序中包含了 wx pp.h ,但现在虽然它编译该部分很好,但它在我包含在项目中的文件的 obj 文件中显示了 100 个错误。其中一个错误是

HelloframeGUI.obj : error LNK2001: unresolved external symbol "public: virtual enum wxLayoutDirection __cdecl wxWindow::GetLayoutDirection(void)const " (?GetLayoutDirection@wxWindow@@UEBA?AW4wxLayoutDirection@@XZ)

有人可以帮忙吗?

#include "HelloframeGUI.h"
#include "wx/msgdlg.h"
#include "wx/app.h"

HelloframeGUI::HelloframeGUI( wxWindow* parent )
:
Helloframe( parent )
{

}

void HelloframeGUI::OnShowMessage( wxCommandEvent& event )
{
    wxMessageBox( wxT("wxFormBuilder Tutorial") );// TODO: Implement OnShowMessage
}

void HelloframeGUI::OnClose( wxCommandEvent& event )
{
    wxTheApp->Exit();// TODO: Implement OnClose
}
c++ wxwidgets object-files undeclared-identifier
2个回答
0
投票

看起来wxTheApp问题已经解决了。无论如何,我通常使用 wxGetApp() 来实现此目的:wxGetApp().Close()。 wxGetApp 需要包含应用程序 h 文件(应该是您项目的一部分)。关于链接器错误,这是所需的最少 wxWidgets 库的列表:

#ifdef_DEBUG
#pragma 注释(lib,“wxmsw28ud_core.lib”)
#pragma 注释(lib,“wxbase28ud.lib”)
#别的
#pragma 注释(lib,“wxmsw28u_core.lib”)
#pragma 注释(lib,“wxbase28u.lib”)
#万一

#pragma 注释(lib,“comctl32.lib”)
#pragma 注释(lib,“rpcrt4.lib”)

将其添加到 .cpp 文件之一。如果您的项目不是 Unicode,请从库名称中删除“u”。


0
投票

这里是关于使用 Microsoft Visual C++ 构建 wxWidgets 应用程序的详细教程。

http://wiki.wxwidgets.org/Microsoft_Visual_C%2B%2B_Guide

© www.soinside.com 2019 - 2024. All rights reserved.