2013-05-16 46 views
2

我想在Mac OS X 10.8.3上使用wxWidgets-2.9.4在Xcode中配置項目。我使用以下選項配置wxWidgets:Xcode中的wxWidgets項目中的未定義符號

./configure --enable-debug --disable-shared --enable-unicode --with-osx_cocoa --enable-monolithic 

然後成功編譯庫。所有演示工作正常。

我使用wx-config獲取的標誌配置了我的項目。特別是:

./wx-config --libs 
-L/wxWidgets/wxWidgets-2.9.4/build-release/lib -framework IOKit -framework Carbon - framework Cocoa -framework AudioToolbox -framework System -framework OpenGL /wxWidgets/wxWidgets-2.9.4/build-release/lib/libwx_osx_cocoau-2.9.a -framework WebKit -lwxregexu-2.9 -lwxtiff-2.9 -lwxjpeg-2.9 -lwxpng-2.9 -lz -lpthread 

./wx-config --cxxflags 
-I/wxWidgets/wxWidgets-2.9.4/build-release/lib/wx/include/osx_cocoa-unicode-static-2.9 - I/wxWidgets/wxWidgets-2.9.4/include -D_FILE_OFFSET_BITS=64 -D__WXMAC__ -D__WXOSX__ -D__WXOSX_COCOA__ 

當我嘗試建立我的項目,我得到很多的未定義符號:

Undefined symbols for architecture x86_64: 
"wxOnAssert(char const*, int, char const*, char const*, wchar_t const*)", referenced from: 
    wxMouseState::ButtonIsDown(wxMouseButton) const in Canvas.o 
    wxControlContainerBase::SetContainerWindow(wxWindow*)  in Canvas.o 
    wxCloseEvent::Veto(bool) in GeoTecDocView.o 
    wxMouseState::ButtonIsDown(wxMouseButton) const in GeoTecDocView.o 
    wxBufferedDC::InitCommon(wxDC*, int) in GeoTecDocView.o 
    wxBoxSizer::wxBoxSizer(int)in GeoTecDocView.o 
    wxArrayString::Item(unsigned long)in GeoTecWxDoc.o 
    ... 
    "wxOnAssert(char const*, int, char const*, char const*, char const*)", referenced from: 
    wxEventFunctorMethod<wxEventTypeTag<wxCommandEvent>, wxEvtHandler, wxEvent, wxEvtHandler>::operator()(wxEvtHandler*, wxEvent&)in DocManager.o 
    wxEventFunctorMethod<wxEventTypeTag<wxCommandEvent>, wxEvtHandler, wxEvent, wxEvtHandler>::wxEventFunctorMethod(void (wxEvtHandler::*)(wxEvent&), wxEvtHandler*)in DocManager.o 
    wxEventTableEntryBase::wxEventTableEntryBase(int, int, wxEventFunctor*, wxObject*)in DocManager.o 
    wxEventFunctorMethod<wxEventTypeTag<wxCommandEvent>, wxEvtHandler, wxEvent, wxEvtHandler>::operator()(wxEvtHandler*, wxEvent&)in GeoTecApp.o 
    wxEventFunctorMethod<wxEventTypeTag<wxCommandEvent>, wxEvtHandler, wxEvent, wxEvtHandler>::wxEventFunctorMethod(void (wxEvtHandler::*)(wxEvent&), wxEvtHandler*)in GeoTecApp.o 
    wxEventTableEntryBase::wxEventTableEntryBase(int, int, wxEventFunctor*, wxObject*)in GeoTecApp.o 
    wxEventFunctorMethod<wxEventTypeTag<wxKeyEvent>, wxEvtHandler, wxEvent, wxEvtHandler>::operator()(wxEvtHandler*, wxEvent&)in GeoTecDocView.o 
    ... 
    "wxMessageBox(wxString const&, wxString const&, long, wxWindow*, int, int)", referenced from: 
    GeoTecMainFrame::OnCancellaTutti(wxCommandEvent&)  in GeoTecDocView.o 
    GeoTecMainFrame::OnCancellaLineaCedimenti(wxCommandEvent&)  in GeoTecDocView.o 
    GeoTecMainFrame::OnRicalcolaOra(wxCommandEvent&)  in GeoTecDocView.o 
    GeoTecMainFrame::AggiornaFinestre()  in GeoTecDocView.o 
    GeoTecMainFrame::OnAbout(wxCommandEvent&)  in GeoTecDocView.o 
    GeoTecMainFrame::OnRemoveObject(GTGraphicObject*)  in GeoTecDocView.o 
    StratigrafiaDialog::Validate()  in GTDialogs.o 
    ... 
    "wxFileSelector(wxString const&, wxString const&, wxString const&, wxString const&, wxString const&, int, wxWindow*, int, int)", referenced from: 
    GeoTecMainFrame::OnImporta(wxCommandEvent&)  in GeoTecDocView.o 
    "wxGet_wxConvLibcPtr()", referenced from: 
    wxGet_wxConvLibc()  in Canvas.o 
    wxGet_wxConvLibc()  in GeoTecApp.o 
    wxGet_wxConvLibc()  in GeoTecDocView.o 
    wxGet_wxConvLibc()  in GeoTecWxDoc.o 
    wxGet_wxConvLibc()  in GlobalParameters.o 
    wxGet_wxConvLibc()  in GTDialogs.o 
    wxGet_wxConvLibc()  in GTPrint.o 
    ... 
    "wxBell()", referenced from: 
    StrisciaIndefinitaDialog::Calcola(wxCommandEvent&)  in GTDialogs.o 
    NumberValidator::OnChar(wxKeyEvent&)  in Validators.o 
    IntValidator::OnChar(wxKeyEvent&)  in Validators.o 
    "wxEntry(int&, char**)", referenced from: 
    _main in GeoTecApp.o 
    "wxCheckBox::Create(wxWindow*, int, wxString const&, wxPoint const&, wxSize const&, long, wxValidator const&, wxString const&)", referenced from: 
    wxCheckBox::wxCheckBox(wxWindow*, int, wxString const&, wxPoint const&, wxSize const&, long, wxValidator const&, wxString const&)in GTDialogs.o 
    "wxClientDC::wxClientDC(wxWindow*)", referenced from: 
    Canvas::OnMouseMove(wxMouseEvent&)  in Canvas.o 
    Canvas::OnMouseLeftUp(wxMouseEvent&)  in Canvas.o 
    GeoTecCanvas::OnMouseMove(wxMouseEvent&)  in GeoTecDocView.o 
    GeoTecCanvas::OnMouseLeftUp(wxMouseEvent&)  in GeoTecDocView.o 
    GeoTecCanvas::OnMouseLeftDown(wxMouseEvent&)  in GeoTecDocView.o 
    GeoTecCanvas::OnMouseDClick(wxMouseEvent&)  in GeoTecDocView.o 
    RiepilogoStratigrafieCanvas::OnMouseLeftDown(wxMouseEvent&)  in RiepilogoStratigrafieView.o 
    ... 
    "wxDocument::LoadObject(std::basic_istream<char, std::char_traits<char> >&)", referenced from: 
    GeoTecWxDoc::LoadObject(std::basic_istream<char, std::char_traits<char> >&)in GeoTecWxDoc.o 
    "wxDocument::RemoveView(wxView*)", referenced from: 
    vtable for GeoTecWxDocin GeoTecWxDoc.o 
    "wxDocument::SaveObject(std::basic_ostream<char, std::char_traits<char> >&)", referenced from: 
    GeoTecWxDoc::SaveObject(std::basic_ostream<char, std::char_traits<char> >&)in GeoTecWxDoc.o 
"wxDocument::SetFilename(wxString const&, bool)", referenced from: 
    GeoTecWxDoc::SaveAs()  in GeoTecWxDoc.o 
"wxDocument::ms_classInfo", referenced from: 
    __static_initialization_and_destruction_0(int, int)in GeoTecWxDoc.o 
"wxDocument::NotifyClosing()", referenced from: 
    vtable for GeoTecWxDocin GeoTecWxDoc.o 

以及更多。

該項目工作正常,如果我使用wxMac-2.8.12,但我有一些圖形問題,所以我想嘗試新版本。

感謝您的任何幫助。 平安夜

回答

0

您可能只爲x86構建了wxWidgets。無論如何,您絕對是爲單一架構而構建的,而您的Xcode項目可能是爲x86和x86_64構建的。

如果您確實需要64位版本的應用程序,則應該使用--enable-universal_binary=x86,x86_64選項重新配置wxWidgets。但我建議僅在32位中構建Xcode項目(即僅適用於x86),至少在開發期間。

+0

謝謝你VZ。其實我已經嘗試過了。實際上,我得到了相同的錯誤:架構i386的未定義符號: 「wxOnAssert(char const *,int,char const *,char const *,wchar_t const *)」,引用來自: 等 –

+0

除非您使用' -disable-debug'時,'wxOnAssert()'必須在那裏。所以唯一的另一種可能性是你沒有鏈接到你建立的庫,而是一些其他的舊版本。 –

+0

我不知道爲什麼,但我開始了一個新的項目,現在一切正常:) 謝謝! –

相關問題