Неопределенные символы в проекте wxWidgets в Xcode

Я пытаюсь настроить проект в Xcode, используя wxWidgets-2.9.4, в Mac OS X 10.8.3. Я настроил 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, но у меня есть некоторые графические проблемы, поэтому я хотел бы попробовать новую версию.

Спасибо за любую помощь.
Ева

2

Решение

Вы, вероятно, создали wxWidgets только для x86. В любом случае, вы определенно создали его для одной архитектуры, в то время как ваш проект XCode, вероятно, настроен для сборки как для x86, так и для x86_64.

Если вам нужна 64-битная версия приложения, вам следует перенастроить wxWidgets с помощью --enable-universal_binary=x86,x86_64 опции. Но я бы посоветовал просто собрать проект Xcode только в 32 бита (т.е. только для x86), по крайней мере, во время разработки.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]