【问题标题】:Compile test program with wxWidgets in MACMAC中用wxWidgets编译测试程序
【发布时间】:2011-11-25 19:24:45
【问题描述】:

操作系统:MAC X 10.7.0

Mac OS X 在 /usr 中安装了旧版本的 wxMac(wxMac-2.8.8.1),但我在 /usr/local 中安装了较新版本的 wxMac(wxMac-2.8.12.0)。要安装它,我用标志编译新的:

arch_flags="-arch i386" ./configure CFLAGS="$arch_flags" CXXFLAGS="$arch_flags" CPPFLAGS="$arch_flags" LDFLAGS="$arch_flags" OBJCFLAGS="$arch_flags" OBJCXXFLAGS="$arch_flags" --enable-unicode --enable-debug - -禁用共享

然后我写了一个简单的程序(hello2.cpp)来测试它:

#include "wx/wx.h"

class HelloWorldApp : public wxApp
{
public:
    virtual bool OnInit();
private:
    wxButton *button;
};


IMPLEMENT_APP(HelloWorldApp)

bool HelloWorldApp::OnInit()
{
    wxFrame *frame = new wxFrame((wxFrame*) NULL, -1, _T("Hello wxWidgets World"));
    frame->CreateStatusBar();
    frame->SetStatusText(_T("Hello World"));
    button = new wxButton((wxFrame *)frame, -2, _T("123"));
    frame->Show(TRUE);
    SetTopWindow(frame);

    return true;
}

我在命令行中用 flag 编译这个测试程序:

g++ hello2.cpp /usr/local/bin/wx-config --cxxflags --libs -o hello2

但我收到了一些警告和错误。我是Mac编程的新手,所以我不知道原因。我只想说:救命!

编译结果如下:

ld:警告:在 /usr/local/lib/libiconv.dylib 中,文件是为不受支持的文件格式构建的,它不是所链接的体系结构 (i386) 未定义的符号: “_libiconv_open”,引用自: wxMBConv_iconv::wxMBConv_iconv(wchar_t const*) 在 libwx_base_carbonud-2.8.a(baselib_strconv.o) wxMBConv_iconv::wxMBConv_iconv(wchar_t const*) 在 libwx_base_carbonud-2.8.a(baselib_strconv.o) wxMBConv_iconv::wxMBConv_iconv(wchar_t const*) 在 libwx_base_carbonud-2.8.a(baselib_strconv.o) wxMBConv_iconv::wxMBConv_iconv(wchar_t const*) 在 libwx_base_carbonud-2.8.a(baselib_strconv.o) wxMBConv_iconv::wxMBConv_iconv(wchar_t const*) 在 libwx_base_carbonud-2.8.a(baselib_strconv.o) wxMBConv_iconv::wxMBConv_iconv(wchar_t const*) 在 libwx_base_carbonud-2.8.a(baselib_strconv.o) wxMBConv_iconv::wxMBConv_iconv(wchar_t const*) 在 libwx_base_carbonud-2.8.a(baselib_strconv.o) wxMBConv_iconv::wxMBConv_iconv(wchar_t const*) 在 libwx_base_carbonud-2.8.a(baselib_strconv.o) “_libiconv”,引用自: wxMBConv_iconv::GetMBNulLen() 常量在 libwx_base_carbonud-2.8.a(baselib_strconv.o) wxMBConv_iconv::WC2MB(char*, wchar_t const*, unsigned long) 约束 libwx_base_carbonud-2.8.a(baselib_strconv.o) wxMBConv_iconv::WC2MB(char*, wchar_t const*, unsigned long) 约束 libwx_base_carbonud-2.8.a(baselib_strconv.o) wxMBConv_iconv::MB2WC(wchar_t*, char const*, unsigned long) 约束 libwx_base_carbonud-2.8.a(baselib_strconv.o) wxMBConv_iconv::MB2WC(wchar_t*, char const*, unsigned long) 约束 libwx_base_carbonud-2.8.a(baselib_strconv.o) wxMBConv_iconv::wxMBConv_iconv(wchar_t const*) 在 libwx_base_carbonud-2.8.a(baselib_strconv.o) wxMBConv_iconv::wxMBConv_iconv(wchar_t const*) 在 libwx_base_carbonud-2.8.a(baselib_strconv.o) “_libiconv_close”,引用自: wxMBConv_iconv::~wxMBConv_iconv() in libwx_base_carbonud-2.8.a(baselib_strconv.o) wxMBConv_iconv::~wxMBConv_iconv() in libwx_base_carbonud-2.8.a(baselib_strconv.o) wxMBConv_iconv::~wxMBConv_iconv() in libwx_base_carbonud-2.8.a(baselib_strconv.o) wxMBConv_iconv::~wxMBConv_iconv() in libwx_base_carbonud-2.8.a(baselib_strconv.o) wxMBConv_iconv::~wxMBConv_iconv() in libwx_base_carbonud-2.8.a(baselib_strconv.o) wxMBConv_iconv::~wxMBConv_iconv() in libwx_base_carbonud-2.8.a(baselib_strconv.o) ld:未找到符号 collect2: ld 返回 1 个退出状态

【问题讨论】:

    标签: macos wxwidgets


    【解决方案1】:

    我卸载 wxMac-2.8.12。 我安装 wxWidgets-2.9.2(./configure --enable-unicode --enable-debug --disable-shared)

    我再次使用 g++ hello2.cpp `/usr/local/bin/wx-config --cxxflags --libs` -o hello2 编译测试程序。只有一个警告:

    ld:警告:在 /System/Library/Frameworks//QuickTime.framework/QuickTime 中,文件中缺少所需的架构 x86_64

    我觉得没问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-18
      • 1970-01-01
      • 2020-01-06
      • 2023-03-31
      • 2011-01-20
      • 1970-01-01
      相关资源
      最近更新 更多