我正在尝试设置我的 Netbeans IDE,以便它能够编译 wxWidgets 项目。
有一个非常相似的问题: Setup wxWidget in Netbeans 6.1 C++ On MS Windows? 但答案对我不起作用。而且提到的版本有点过时了。
我使用 mingw 包进行编译。在 mysys 中使用以下命令从控制台编译一个小型 hello World 应用程序没有问题:
$ g++ hello.cpp `wx-config --libs` `wx-config --cxxflags` -o hello.exe
Run Code Online (Sandbox Code Playgroud)
这是我在 Netbeans 中尝试的内容:
项目属性:
wx-config cxxflags 用反引号括起来)wx-config --libs 用反引号括起来)当我尝试编译时 Netbeans 创建的命令行对我来说似乎是正确的
g++.exe `wx-config --cxxflags` -c -g -I/D/lib/wxWidgets/include -MMD -MP -MF build/Debug/MinGW-Windows/main.o.d -o build/Debug/MinGW-Windows/main.o main.cpp
Run Code Online (Sandbox Code Playgroud)
这编译没有错误
g++.exe `wx-config --cxxflags` `wx-config --libs` -o dist/Debug/MinGW-Windows/wxwidgetstest build/Debug/MinGW-Windows/main.o -L/D/lib/wxWidgets/lib/gcc_lib …Run Code Online (Sandbox Code Playgroud) 我检查了一些其他问题和网站,我得出的结论是Python确实允许(如果我错了,请纠正我)你使用不同的跨平台工具包(如Qt,wxWidgets和其他人)制作GUI程序.但是如果我不想要跨平台的可移植性呢?主要的,我想使用Cocoa for Mac等原生库,Windows的Windows本机库,GNOME的GTK和不同代码的KDE应用程序的Qt来开发本机应用程序.不同的代码不是问题.我可以这样做吗?我只是不需要跨平台的可移植性,但我需要制作本机应用程序?
专业程序员的任何见解?
我正在使用wxWidgets 2.8在Windows 7 x64上编译VC++ 10应用程序.这就是我所犯的错误.代码是使用wxFormBuilder生成的.
更新:我尝试在32位机器上运行它,仍然有同样的问题.
我不知道我错过了哪些wxwidgets库,或者我做错了哪些设置.在调试和发布模式下都可以尝试.
如果有人能指出一些提示,我真的很感激!一直在看这个问题.
1>WelcomeDlg.obj : error LNK2001: unresolved external symbol "class wxPoint const wxDefaultPosition" (?wxDefaultPosition@@3VwxPoint@@B)
1>ConsoleDlg.obj : error LNK2001: unresolved external symbol "class wxPoint const wxDefaultPosition" (?wxDefaultPosition@@3VwxPoint@@B)
1>ControlDialog.obj : error LNK2019: unresolved external symbol "class wxPoint const wxDefaultPosition" (?wxDefaultPosition@@3VwxPoint@@B) referenced in function "public: void __cdecl ControlDialog::loadFile(class std::basic_string,class std::allocator >)" (?loadFile@ControlDialog@@QEAAXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
1>WxWidgetsWindow.obj : error LNK2001: unresolved external symbol "class wxPoint const wxDefaultPosition" (?wxDefaultPosition@@3VwxPoint@@B)
1>MainFrame.obj : error LNK2001: unresolved external symbol "class …Run Code Online (Sandbox Code Playgroud) 在WxWidget中,颜色由RGB整数三元组表示.要使用[0.0-1.0] float三元组表示与其他库交互,需要进行转换.
WxPython,Numpy或Python中是否已存在这样的转换函数?
我正在为使用rebar的应用程序准备一个版本,我想知道从标准库中包含头文件的常用方法是什么.在我的例子中,它是wx.hrl文件,它在我的代码中包含在其完整的绝对路径中.
我猜这不是正确的方法:o)
像许多使用 Boost ASIO 库的人一样,我收到了“WinSock.h 已经包含在内”的错误消息。在其他帖子中,通过将 #include 行移到 #include 上方来回答问题
就我而言,我正在处理一个使用 Wx Widgets 的项目,并且似乎与 MFC 没有任何连接,也没有与 Win32 的直接连接。我找不到任何对 windows.h 的调用,也找不到任何相关的调用。我也试过使用 WIN32_LEAN_AND_MEAN 和 BOOST_ASIO_NO_WIN32_LEAN_AND_MEAN 声明。
我想知道是否有人在编写 Wx Widgets 项目时遇到了与 Boost ASIO 类似的问题?如果是这样,您是否能够解决 Winsock 错误?
我在使用delete和destroy在我的情况下想要删除对象时感到困惑,例如:
app.h
#include "taskBarIcon.h"
class myApp: public wxApp{
public:
// ....
private:
CTaskBarIcon *m_pTaskbar; // = NULL
};
Run Code Online (Sandbox Code Playgroud)
app.cpp
int myApp::OnExit() {
if (m_pTaskbar != NULL) {
delete m_pTaskbar; // <-- The problem here
m_pTaskbar = NULL;
}
return 0;
}
int myApp::OnRun() {
mainFrm *_mainFrm = mainFrm::getInstance(); // The main window
_mainFrm->Show(false);
m_pTaskbar = new CTaskBarIcon(_mainFrm);
m_pTaskbar->SetIcon(wxIcon("appIcon"), _mainFrm->GetTitle());
return wxApp::OnRun();
}
Run Code Online (Sandbox Code Playgroud)
CTaskBarIcon.cpp
void CTaskBarIcon::rightButton_Click(wxTaskBarIconEvent & event) {
PopupMenu(CreatePopupMenu());
}
void CTaskBarIcon::popupMenu_showWindow(wxCommandEvent & event) {
m_pHandler->Iconize(false); …Run Code Online (Sandbox Code Playgroud) 我正在使用 wxWidget 框架。当我设置时,System/Subsystem: Console (/SUBSYSTEM:CONSOLE)我的程序将启动,但会同时显示 GUI 和控制台。这是它的外观:https : //i.stack.imgur.com/G83PR.png
当我更改时,System/Subsystem: Windows (/SUBSYSTEM:WINDOWS)它会显示错误:
LNK2019 未解析的外部符号 _WinMain@16 在函数 "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) 中引用
这是我的代码:
int main(int argc, char** argv) {
Gui_AutoPokemon* gui = new Gui_AutoPokemon();
wxApp::SetInstance(gui);
mainArgc = argc;
mainArgv = argv;
return wxEntry(argc, argv);
}
Run Code Online (Sandbox Code Playgroud)
如何隐藏控制台窗口?
这相当令人沮丧,最常见的答案是“做 CodeBlocks 所做的事情”。我不在乎。我想明白。
问题是:wxWidgets 在非整体构建时被拆分到多个静态库中。这些必须根据它们的依赖关系以正确的顺序链接,否则静态链接将失败。
这些库是(它们的文件名是缩写的,但为了简单起见,我使用了它们的全名):
wxAdvanced
wxAui
wxBase
wxCore
wxGL
wxHTML
wxMedia
wxNet
wxPropertyGrid
wxQA
wxRibbon
wxRichText
wxSTC
wxWebView
wxXML
wxXRC
Run Code Online (Sandbox Code Playgroud)
什么是魔术顺序,我们可以在哪里查找 - 最重要的是:它如何归入我的项目CMakeLists.txt?
下面显示了一些具有代表性的错误消息 - 也许它们会使通过网络搜索更容易发现此问答:
C:/wxwidgets-install_3.1.3_9/lib/gcc_x64_lib/wxmsw31ud_aui.a(floatpane.cpp.obj):floatpane.cpp:(.rdata$.refptr._ZN11wxMiniFrame12ms_classInfoE[.refptr._ZN11wxMiniFrame12ms_classInfoE]+0x0): undefined reference to `wxMiniFrame::ms_classInfo'
C:/wxwidgets-install_3.1.3_9/lib/gcc_x64_lib/wxmsw31ud_core.a(window.cpp.obj):window.cpp:(.rdata$.refptr.wxEVT_POWER_RESUME[.refptr.wxEVT_POWER_RESUME]+0x0): undefined reference to `wxEVT_POWER_RESUME'
src/CMakeFiles/wxmaxima.dir/Unity/unity_10.cxx.obj: In function `XmlInspector::XmlInspector(wxWindow*, int)':
C:/projects/wxMaxima/src/XmlInspector.cpp:42: undefined reference to `wxRichTextCtrl::wxRichTextCtrl(wxWindow*, int, wxString const&, wxPoint const&, wxSize const&, long, wxValidator const&, wxString const&)'
Run Code Online (Sandbox Code Playgroud) 我只是在学习 sizers 并且对如何实现这一点感到有些困惑。
如果我在一个框架中有一个水平框 sizer 并向其添加两个按钮(每个按钮的比例为“1”),那么它们都将拉伸以占据 sizer 的整个水平宽度(等于框架的整个水平宽度) ) 并均匀分布(参见下面的示例 1)。
示例 1 代码:
wxFrame* frame = new wxFrame(nullptr, wxID_ANY, "Frame");
wxPanel* panel = new wxPanel(frame, wxID_ANY);
wxBoxSizer* buttonSizer = new wxBoxSizer(wxHORIZONTAL);
wxButton* buttonOk = new wxButton(panel, wxID_OK, "Ok");
wxButton* buttonCancel = new wxButton(panel, wxID_CANCEL, "Cancel");
buttonSizer->Add(buttonOk, 1, wxALL, 10);
buttonSizer->Add(buttonCancel, 1, wxALL, 10);
panel->SetSizerAndFit(buttonSizer);
frame->Show();
Run Code Online (Sandbox Code Playgroud)
但是,如果我希望这些按钮保持其原始大小(不被拉伸),但仍然均匀分布在框架中,并且仍然在每个 wxSizerItem 内水平居中怎么办?也就是说,水平 sizer 的两个“列”都占据了对话框的一半,并且每个按钮都在这些列中的每一列中居中?我将如何做到这一点?这是一张图。按钮应该是它们的默认大小。
______________________________________
| | Button 1 | | Button 3 | |
--------------------------------------
Run Code Online (Sandbox Code Playgroud)
以下代码不起作用:
buttonSizer->Add(buttonOk, 0, wxALL, 10);
buttonSizer->Add(buttonCancel, 0, …Run Code Online (Sandbox Code Playgroud)