如何在 Mac 上正确“安装”wxWidgets

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

我已经尝试了一段时间让 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)?

...最终以分段错误结束。

在我看来,我同时在两个不同的版本中安装了两个版本(因此“类在...和...中都实现了”)。但如果我卸载 Hombrew,它就会消除导致编译失败的东西。

我尝试了互联网上的各种可能的修复方法,但没有一个有效。

我不太确定在这里做什么。以前有其他人经历过这种情况吗?我应该做什么来修复它?

我的 Mac 是 Intel 的,运行 MacOS 11.2.3。

c++ wxwidgets
2个回答
7
投票

@scriptor6,

摆脱自制软件安装。

去掉你编译的那个

从 wxwidgets.org/downloads 下载该库的最新版本。

在某个地方打开它的包装。

这样做

cd wxwidgets-3.1.4
mkdir buildOSX
cd buildOSX
../configure --enable-debug
make
cd samples/minimal
make
open minimal.app

如果您在任何时候遇到错误,请告诉我们并剪切并粘贴出现的完整错误消息

HTH.


0
投票

第一步后显示 cd: no such file or directory: wxwidgets-3.2.6 how to do.

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.