如何在 Mac 上正确 'install' wxWidgets
How to correctly 'install' wxWidgets on a Mac
我已经尝试了一段时间让 wxWidgets 库在我的 Mac 上工作,但我遇到了很多问题。我已经尝试过下载源代码并自己构建它并使用 Homebrew。
我已经到了可以编译以下内容的地步:
helloworld.hpp:
#include <wx/wxprec.h>
#ifndef WX_PRECOMP
#include <wx/wx.h>
#endif
class HelloWorldApp : public wxApp {
public:
virtual bool OnInit();
};
DECLARE_APP(HelloWorldApp)
helloworld.cpp:
#include "helloworld.hpp"
IMPLEMENT_APP(HelloWorldApp)
bool HelloWorldApp::OnInit() {
wxFrame *frame = new wxFrame((wxFrame*) NULL, -1, _T("Hello wxWidgets World"));
frame->CreateStatusBar();
frame->SetStatusText(_T("Hello World"));
frame->Show(true);
SetTopWindow(frame);
return true;
}
我用g++ helloworld.cpp `wx-config --cxxflags --libs` -o hello
来编译。这似乎可行,并且 g++ 不会报告任何错误或警告。
但是,一旦我尝试 运行 它 (./hello
),我就会遇到很多错误,其中大部分是这样的:
objc[92442]: Class wxNSSomething is implemented in both
/usr/local/Cellar/wxmac/3.0.5.1_1/lib/something.dylib (0x10bd00c50)
and /usr/local/opt/wxmac/lib/something.dylib (0x10b329c50). One of the two
will be used. Which one is undefined.
和
./src/common/object.cpp(251): assert "classTable->Get(m_className) == NULL"
failed in Register(): Class "wxSomething" already in RTTI table -
have you used IMPLEMENT_DYNAMIC_CLASS() multiple times or linked some object file twice)?
...最终以分段错误结束。
在我看来,我同时在两个不同的版本中安装了两个版本(因此“Class 在...和...中都实现了”)。但是,如果我卸载 Hombrew,它会消除导致编译失败的东西。
我已经尝试了来自 Internet 的各种可能的修复程序,但其中 none 已经奏效。
我不太确定在这里做什么。有没有其他人经历过这个?我应该怎么做才能解决它?
我的 Mac 是 Intel 和 运行ning MacOS 11.2.3.
@scriptor6,
摆脱自制程序安装。
去掉你编译的那个
从 wxwidgets 下载最新版本的库。org/downloads。
在某处解压缩。
这样做
cd wxwidgets-3.1.4
mkdir buildOSX
cd buildOSX
../configure --enable-debug
make
cd samples/minimal
make
open minimal.app
如果您在任何时候遇到错误 - 让我们知道完整的错误消息,按原样剪切'n'粘贴
HTH.
我已经尝试了一段时间让 wxWidgets 库在我的 Mac 上工作,但我遇到了很多问题。我已经尝试过下载源代码并自己构建它并使用 Homebrew。
我已经到了可以编译以下内容的地步:
helloworld.hpp:
#include <wx/wxprec.h>
#ifndef WX_PRECOMP
#include <wx/wx.h>
#endif
class HelloWorldApp : public wxApp {
public:
virtual bool OnInit();
};
DECLARE_APP(HelloWorldApp)
helloworld.cpp:
#include "helloworld.hpp"
IMPLEMENT_APP(HelloWorldApp)
bool HelloWorldApp::OnInit() {
wxFrame *frame = new wxFrame((wxFrame*) NULL, -1, _T("Hello wxWidgets World"));
frame->CreateStatusBar();
frame->SetStatusText(_T("Hello World"));
frame->Show(true);
SetTopWindow(frame);
return true;
}
我用g++ helloworld.cpp `wx-config --cxxflags --libs` -o hello
来编译。这似乎可行,并且 g++ 不会报告任何错误或警告。
但是,一旦我尝试 运行 它 (./hello
),我就会遇到很多错误,其中大部分是这样的:
objc[92442]: Class wxNSSomething is implemented in both
/usr/local/Cellar/wxmac/3.0.5.1_1/lib/something.dylib (0x10bd00c50)
and /usr/local/opt/wxmac/lib/something.dylib (0x10b329c50). One of the two
will be used. Which one is undefined.
和
./src/common/object.cpp(251): assert "classTable->Get(m_className) == NULL"
failed in Register(): Class "wxSomething" already in RTTI table -
have you used IMPLEMENT_DYNAMIC_CLASS() multiple times or linked some object file twice)?
...最终以分段错误结束。
在我看来,我同时在两个不同的版本中安装了两个版本(因此“Class 在...和...中都实现了”)。但是,如果我卸载 Hombrew,它会消除导致编译失败的东西。
我已经尝试了来自 Internet 的各种可能的修复程序,但其中 none 已经奏效。
我不太确定在这里做什么。有没有其他人经历过这个?我应该怎么做才能解决它?
我的 Mac 是 Intel 和 运行ning MacOS 11.2.3.
@scriptor6,
摆脱自制程序安装。
去掉你编译的那个
从 wxwidgets 下载最新版本的库。org/downloads。
在某处解压缩。
这样做
cd wxwidgets-3.1.4
mkdir buildOSX
cd buildOSX
../configure --enable-debug
make
cd samples/minimal
make
open minimal.app
如果您在任何时候遇到错误 - 让我们知道完整的错误消息,按原样剪切'n'粘贴
HTH.