- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
在编译我的 wxWidget HelloWorld 应用程序时,出现以下错误:
Warning 1 warning LNK4098: defaultlib 'LIBCMTD' conflicts with use of other libs; use /NODEFAULTLIB:library wxWidget__HelloWorld wxWidget__HelloWorld
Error 2 error LNK2001: unresolved external symbol "public: virtual bool __thiscall wxApp::Initialize(int &,wchar_t * *)" (?Initialize@wxApp@@UAE_NAAHPAPA_W@Z) minimal.obj wxWidget__HelloWorld
Error 3 error LNK2001: unresolved external symbol "public: virtual void __thiscall wxAppConsole::OnAssertFailure(wchar_t const *,int,wchar_t const *,wchar_t const *,wchar_t const *)" (?OnAssertFailure@wxAppConsole@@UAEXPB_WH000@Z) minimal.obj wxWidget__HelloWorld
Error 4 error LNK2001: unresolved external symbol "public: virtual void __thiscall wxAppConsole::OnAssert(wchar_t const *,int,wchar_t const *,wchar_t const *)" (?OnAssert@wxAppConsole@@UAEXPB_WH00@Z) minimal.obj wxWidget__HelloWorld
Error 5 error LNK2019: unresolved external symbol "protected: void __thiscall wxStringBase::InitWith(wchar_t const *,unsigned int,unsigned int)" (?InitWith@wxStringBase@@IAEXPB_WII@Z) referenced in function "public: __thiscall wxStringBase::wxStringBase(wchar_t const *)" (??0wxStringBase@@QAE@PB_W@Z) minimal.obj wxWidget__HelloWorld
Error 6 error LNK2019: unresolved external symbol "public: int __cdecl wxString::Printf(wchar_t const *,...)" (?Printf@wxString@@QAAHPB_WZZ) referenced in function "public: void __thiscall MyFrame::OnAbout(class wxCommandEvent &)" (?OnAbout@MyFrame@@QAEXAAVwxCommandEvent@@@Z) minimal.obj wxWidget__HelloWorld
Error 7 error LNK2001: unresolved external symbol "wchar_t const * const wxEmptyString" (?wxEmptyString@@3PB_WB) minimal.obj wxWidget__HelloWorld
Error 8 error LNK2001: unresolved external symbol "wchar_t const * const wxStatusLineNameStr" (?wxStatusLineNameStr@@3QB_WB) minimal.obj wxWidget__HelloWorld
Error 9 error LNK2001: unresolved external symbol "wchar_t const * const wxFrameNameStr" (?wxFrameNameStr@@3QB_WB) minimal.obj wxWidget__HelloWorld
Error 10 error LNK2019: unresolved external symbol "void __cdecl wxOnAssert(wchar_t const *,int,char const *,wchar_t const *,wchar_t const *)" (?wxOnAssert@@YAXPB_WHPBD00@Z) referenced in function "public: __thiscall wxStringBase::wxStringBase(class wxStringBase const &)" (??0wxStringBase@@QAE@ABV0@@Z) minimal.obj wxWidget__HelloWorld
Error 11 fatal error LNK1120: 9 unresolved externals F:\C++\_2008_\wxWidget__HelloWorld\Debug\wxWidget__HelloWorld.exe wxWidget__HelloWorld
我的源码如下:
//
Name: minimal.cpp
// Purpose: Minimal wxWidgets sample
// Author: Julian Smart
#include "wx/wx.h"
// Declare the application class
class MyApp : public wxApp
{
public:
// Called on application startup
virtual bool OnInit();
};
// Declare our main frame class
class MyFrame : public wxFrame
{
public:
// Constructor
MyFrame(const wxString& title);
// Event handlers
void OnQuit(wxCommandEvent& event);
void OnAbout(wxCommandEvent& event);
private:
// This class handles events
DECLARE_EVENT_TABLE()
};
// Implements MyApp& GetApp()
DECLARE_APP(MyApp)
// Give wxWidgets the means to create a MyApp object
IMPLEMENT_APP(MyApp)
// Initialize the application
bool MyApp::OnInit()
{
// Create the main application window
MyFrame *frame = new MyFrame(wxT("Minimal wxWidgets App"));
// Show it
frame->Show(true);
// Start the event loop
return true;
}
// Event table for MyFrame
BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(wxID_ABOUT, MyFrame::OnAbout)
EVT_MENU(wxID_EXIT, MyFrame::OnQuit)
END_EVENT_TABLE()
void MyFrame::OnAbout(wxCommandEvent& event)
{
wxString msg;
msg.Printf(wxT("Hello and welcome to %s"),
wxVERSION_STRING);
wxMessageBox(msg, wxT("About Minimal"),
wxOK | wxICON_INFORMATION, this);
}
void MyFrame::OnQuit(wxCommandEvent& event)
{
// Destroy the frame
Close();
}
#include "mondrian.xpm"
MyFrame::MyFrame(const wxString& title)
: wxFrame(NULL, wxID_ANY, title)
{
// Set the frame icon
SetIcon(wxIcon(mondrian_xpm));
// Create a menu bar
wxMenu *fileMenu = new wxMenu;
// The "About" item should be in the help menu
wxMenu *helpMenu = new wxMenu;
helpMenu->Append(wxID_ABOUT, wxT("&About...\tF1"),
wxT("Show about dialog"));
fileMenu->Append(wxID_EXIT, wxT("E&xit\tAlt-X"),
wxT("Quit this program"));
// Now append the freshly created menu to the menu bar...
wxMenuBar *menuBar = new wxMenuBar();
menuBar->Append(fileMenu, wxT("&File"));
menuBar->Append(helpMenu, wxT("&Help"));
// ... and attach this menu bar to the frame
SetMenuBar(menuBar);
// Create a status bar just for fun
CreateStatusBar(2);
SetStatusText(wxT("Welcome to wxWidgets!"));
}
缺少什么?
最佳答案
确保您的项目设置与所有依赖项正在使用的设置相匹配(实际上您应该匹配依赖项:))。
可能导致 MS 工具链链接问题的设置(除了明显的根本不链接库之外):
当您知道那个该死的 unresolved-wchar_t*-containing-symbol 在您刚刚链接到的该死的库中时,这可能是这两个中的一个。
这就是您的 LIBCMTD 警告的原因。以及缺少/冲突的符号,如 __free 或 malloc 或其他标准外观的东西。奇怪的是,当你跨越 dll 边界时,甚至在空地方,如果你设法将 2 个不同的运行时链接到一个二进制文件中,甚至在空的地方都没有崩溃(我已经看到了!)。
一些库使用它们来决定代码是静态链接还是动态链接。它们通常会影响 lib 或 dll 附带的 header 。你必须知道你是否需要它们。 RTFM 或查看这些工作示例项目的配置。
所以对于你的问题,首先确保你添加了你必须的任何 wxWidget 库(以及它们需要的任何依赖项)。搜索任何缺失的符号,让谷歌指导你。有人会遇到同样的问题,并且会在自己弄清楚之前将其张贴在某个地方。
一个好的搜索词是
virtual bool __thiscall wxApp::Initialize
运行时需要特别小心。当您获得所需的所有库,但收到 libcmt* 或 msvc* 警告或冲突时,请检查所有项目设置并检查我列出的 4 个项目是否正确且一致。如果您没有自己构建它们,那么您也必须了解它们的依赖关系。使用链接器详细信息标志也可以准确查看谁带来了不需要的运行时。
其他编译器和链接器设置也可能会影响事情,因此请仔细梳理它们。
其中大部分更改都需要干净地重新编译。
这就是构建 C++ 代码的乐趣。
关于C++ : wxWidget HelloWorld,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1409031/
我刚刚在我的雪豹机器上下载了 wxWidget 源代码。源代码是多平台的,所以它也包含 wxWidget 的 windows 和 GTK 组件。我想编译 wxWidget 源代码,但还没有找到好的指南
我正在使用 C++/wxWidgets 开发一个小型应用程序,其中 GUI 的几个部分需要根据例如更新。收到 UDP 数据报。更具体地说,辅助线程尝试在网络中保留可用“客户端”的列表(可能会出现和消失
我在顶层窗口中有一个 wxPanel 的子类,上面有几层 wxSplitter。当显示窗口时,会发生一些调整大小和布局。当它完成时,我的面板背景在其某些背景上有随机垃圾(黑色或窗口的其他部分)。这似乎
作为 wxWidgets 的新手,我需要一些关于如何让 wxTimer 工作的示例代码。 The reference提供了 3 种使用方法,但不包含其中任何一种的示例代码。最理想的是,我想让方法 2
wxWidgets 库包括一个简单的 HTML 解析器和查看器,我试图用它来显示一些简单的 HTML。我想将某些链接(指向尚不存在的项目的链接)设置为不同的颜色,或者以其他方式表明需要创建它们,但我没
我想将同步事件从工作线程发送到 UI 主线程。我如何在 wxWidgets 中做到这一点? sample 的链接真的很有帮助 最佳答案 您应该使用 队列事件(wxEvent* 事件)用于线程间通信。
任何人都可以推荐 CLion 和 wxWdgets 的教程或入门指南吗?我四处寻找,但找不到任何东西。 最佳答案 好, 你应该在这里下载 WxWidgets http://www.wxwidgets.
希望有人能帮我解决这个问题。我正在使用 Visual Studio 2005 并创建一个静态链接到 wxWidgets 中的静态库。我有: 根据他们的指南静态编译wxWidgets 在我的“附加库目录
我目前正在设计将我现有的 .NET/C#/WinForms 项目迁移到一个平台中立的解决方案,我见过的最有吸引力的替代方案似乎是 wxWidgets,特别是考虑到我对 C++ 和 MFC 的熟悉,这似
几周以来,我一直被 wxWidgets 淹没。但是,我需要一些帮助: 动态链接 Unicode、Release、Non-monolithic 版本的 wxWidgets 3.0.0 时,如何链接以下库
我正在尝试一个新的设置。我使用的是 32 位 Windows 8 Pro 笔记本电脑。我已经下载了 MinGW-builds 的 GCC 4.8.1。我用它来编译 LLVM 和 CLang(3.4+
我正在寻找一个如何使用 WxWidgets 在 Windows 上创建 DLL 库的简单示例。 我需要在 DLL 上使用一些 wxWidgets API,它会从 Delphi 调用。 最佳答案 在您的
打包 Perl wxWidgets 应用程序以分发给未安装 Perl 或 wxWidgets 的 Windows 和 Mac 用户的最佳方法是什么? 有问题的用户不是很懂电脑,所以不能指望他们单独安装
我在处理一些用wxWidgets 2.8 编写的代码,现在需要转移到wxWidgets 2.9。 我这样定义: wxLocale m_locale; 和使用 m_locale.Init(iLocale
我在 linux 或 FreeBSD 上构建 wxWidgets 库时注意到 wxWidgets 需要其他 GUI 库,例如 GTK+、Motif 等,而 GTK+、Motif 或 FLTK 库似乎是
这是一个关于 wxBoxSizer 的问题。我正在实现一个自定义 wxWidget,如可折叠 Pane 。 问题是:我有一个 wxBoxSizer (Sizer1),我添加了另一个 wxBoxSize
我正在尝试编译 wxwidgets。我正在使用 mingw32 进行编译并遵循 zip 文件附带的 install.txt,但是当我编译它时,它给了我这些错误。 如果不存在 gcc_mswd mkdi
我想了解新的主要 wxWidgets 3.0 版本的学习资源。我看到网上有很多旧版本的资源,还有 2005 年的一本书。但我不确定它们是否合适。 Web 教程将是最好的,但欢迎任何内容。 如前所述,我
wxWidgets应用程序在主窗口的状态栏中显示普通菜单项的帮助字符串。不幸的是,对于使用wxWindow::PopupMenu命令调用的菜单,它似乎没有显示它们,我需要这样做。 我尝试将EVT_ME
如何获取模块路径? 我正在编写包含在 DLL 中的扩展,并希望在运行时获取我的库的路径。 更新 当然第一种方法很好用 static wxString GetModulePath() { sta
我是一名优秀的程序员,十分优秀!