Скомпилировать тестовую программу с wxWidgets в MAC - PullRequest
0 голосов
/ 27 сентября 2011

ОС: MAC X 10.7.0

Mac OS X устанавливает более старую версию wxMac (wxMac-2.8.8.1) в / usr, но я устанавливаю более новую (wxMac-2.8.12.0) в / usr / local. Чтобы установить его, я собираю новый с флагом:

arch_flags = "- arch i386" " -disable-общий

Затем я пишу простую программу (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;
}

Я скомпилирую эту тестовую программу в командной строке с флагом:

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

Но я получаю некоторые предупреждения и ошибки. Я новичок в программировании на Mac, поэтому не знаю причины. Я просто должен сказать: помогите!

Вот результат компиляции:

ld: warning: в /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 () const в libwx_base_carbonud-2.8.a (baselib_strconv.o) wxMBConv_iconv :: WC2MB (char *, wchar_t const *, unsigned long) constin libwx_base_carbonud-2.8.a (baselib_strconv.o) wxMBConv_iconv :: WC2MB (char *, wchar_t const *, unsigned long) constin libwx_base_carbonud-2.8.a (baselib_strconv.o) wxMBConv_iconv :: MB2WC (wchar_t *, char const *, long без знака) constin libwx_base_carbonud-2.8.a (baselib_strconv.o) wxMBConv_iconv :: MB2WC (wchar_t *, char const *, long без знака) constin 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 () в libwx_base_carbonud-2.8.a (baselib_strconv.o) wxMBConv_iconv :: ~ wxMBConv_iconv () в libwx_base_carbonud-2.8.a (baselib_strconv.o) wxMBConv_iconv :: ~ wxMBConv_iconv () в libwx_base_carbonud-2.8.a (baselib_strconv.o) wxMBConv_iconv :: ~ wxMBConv_iconv () в libwx_base_carbonud-2.8.a (baselib_strconv.o) wxMBConv_iconv :: ~ wxMBConv_iconv () в libwx_base_carbonud-2.8.a (baselib_strconv.o) wxMBConv_iconv :: ~ wxMBConv_iconv () в libwx_base_carbonud-2.8.a (baselib_strconv.o) ld: символ (ы) не найден collect2: ld вернул 1 статус выхода

1 Ответ

0 голосов
/ 28 сентября 2011

Удаляю 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 в файле

Я думаю, что все в порядке.

...