wxMozilla and wxPython 2.5.3.1

Hi Robin,

I'm trying to build the wxMozilla Py extension for 2.5.3.1, but now I'm getting a bunch of wxSizer-related undefined symbols when linking mozilla_wrap.cpp. ;-/ The process I took is as follows:

1) Download wxPython-src-2.5.3.1 and wxPython-2.5-win32-devel and untar them.

2) copy wxPython-2.5-win32-devel into wxPython-src tree

3) copy setup.h from /lib/vc_dll/mswh to /include/wx (yes, I know it's a hack, but I'll clean up the process once I've got it building properly)

4) delete the wxMozilla Python extension 'build' folder for a clean build

5) Build SWIG 1.3.22 with your patch on Windows

6) call "setup.py install WXPY_SRC=<wxPython-src dir> USE_SWIG=1 SWIG=<swig.exe file location>"

When I do this, at the mozilla_wrap.cpp linking phase, I get a bunch of wxSizer undefineds. It is linking to <wxPython-src>/lib/vc_dll/wxmsw25h.lib, BTW. The only common thread I can see is that they're all inline functions. Below is the error messages MSVC6 spit out. AFAICT these functions aren't something that should get conditionally compiled, so I'm a bit stumped as to why these symbols are showing up as undefined... Any guess as to what may be going on?

Thanks,

Kevin

Errors:

···

--------------------------------------------------------------------
wxMozillaWindow.obj : error LNK2001: unresolved external symbol "public: virtual
  void __thiscall wxSizer::PrependStretchSpacer(int)" (?PrependStretchSpacer@wxSi
zer@@UAEXH@Z)
cstmdlg.obj : error LNK2001: unresolved external symbol "public: virtual void __
thiscall wxSizer::PrependStretchSpacer(int)" (?PrependStretchSpacer@wxSizer@@UAE
XH@Z)
wxMozillaWindow.obj : error LNK2001: unresolved external symbol "public: virtual
  void __thiscall wxSizer::PrependSpacer(int)" (?PrependSpacer@wxSizer@@UAEXH@Z)
cstmdlg.obj : error LNK2001: unresolved external symbol "public: virtual void __
thiscall wxSizer::PrependSpacer(int)" (?PrependSpacer@wxSizer@@UAEXH@Z)
wxMozillaWindow.obj : error LNK2001: unresolved external symbol "public: virtual
  void __thiscall wxSizer::Prepend(class wxWindow *,int,int,int,class wxObject *)
" (?Prepend@wxSizer@@UAEXPAVwxWindow@@HHHPAVwxObject@@@Z)
cstmdlg.obj : error LNK2001: unresolved external symbol "public: virtual void __
thiscall wxSizer::Prepend(class wxWindow *,int,int,int,class wxObject *)" (?Prep
end@wxSizer@@UAEXPAVwxWindow@@HHHPAVwxObject@@@Z)
wxMozillaWindow.obj : error LNK2001: unresolved external symbol "public: virtual
  void __thiscall wxSizer::Prepend(class wxSizer *,int,int,int,class wxObject *)"
  (?Prepend@wxSizer@@UAEXPAV1@HHHPAVwxObject@@@Z)
cstmdlg.obj : error LNK2001: unresolved external symbol "public: virtual void __
thiscall wxSizer::Prepend(class wxSizer *,int,int,int,class wxObject *)" (?Prepe
nd@wxSizer@@UAEXPAV1@HHHPAVwxObject@@@Z)
wxMozillaWindow.obj : error LNK2001: unresolved external symbol "public: virtual
  void __thiscall wxSizer::Prepend(int,int,int,int,int,class wxObject *)" (?Prepe
nd@wxSizer@@UAEXHHHHHPAVwxObject@@@Z)
cstmdlg.obj : error LNK2001: unresolved external symbol "public: virtual void __
thiscall wxSizer::Prepend(int,int,int,int,int,class wxObject *)" (?Prepend@wxSiz
er@@UAEXHHHHHPAVwxObject@@@Z)
wxMozillaWindow.obj : error LNK2001: unresolved external symbol "public: virtual
  void __thiscall wxSizer::Prepend(class wxSizerItem *)" (?Prepend@wxSizer@@UAEXP
AVwxSizerItem@@@Z)
cstmdlg.obj : error LNK2001: unresolved external symbol "public: virtual void __
thiscall wxSizer::Prepend(class wxSizerItem *)" (?Prepend@wxSizer@@UAEXPAVwxSize
rItem@@@Z)
wxMozillaWindow.obj : error LNK2001: unresolved external symbol "public: virtual
  void __thiscall wxSizer::InsertStretchSpacer(unsigned int,int)" (?InsertStretch
Spacer@wxSizer@@UAEXIH@Z)
cstmdlg.obj : error LNK2001: unresolved external symbol "public: virtual void __
thiscall wxSizer::InsertStretchSpacer(unsigned int,int)" (?InsertStretchSpacer@w
xSizer@@UAEXIH@Z)
wxMozillaWindow.obj : error LNK2001: unresolved external symbol "public: virtual
  void __thiscall wxSizer::InsertSpacer(unsigned int,int)" (?InsertSpacer@wxSizer
@@UAEXIH@Z)
cstmdlg.obj : error LNK2001: unresolved external symbol "public: virtual void __
thiscall wxSizer::InsertSpacer(unsigned int,int)" (?InsertSpacer@wxSizer@@UAEXIH
@Z)
wxMozillaWindow.obj : error LNK2001: unresolved external symbol "public: virtual
  void __thiscall wxSizer::Insert(unsigned int,class wxWindow *,int,int,int,class
  wxObject *)" (?Insert@wxSizer@@UAEXIPAVwxWindow@@HHHPAVwxObject@@@Z)
cstmdlg.obj : error LNK2001: unresolved external symbol "public: virtual void __
thiscall wxSizer::Insert(unsigned int,class wxWindow *,int,int,int,class wxObjec
t *)" (?Insert@wxSizer@@UAEXIPAVwxWindow@@HHHPAVwxObject@@@Z)
wxMozillaWindow.obj : error LNK2001: unresolved external symbol "public: virtual
  void __thiscall wxSizer::Insert(unsigned int,class wxSizer *,int,int,int,class
wxObject *)" (?Insert@wxSizer@@UAEXIPAV1@HHHPAVwxObject@@@Z)
cstmdlg.obj : error LNK2001: unresolved external symbol "public: virtual void __
thiscall wxSizer::Insert(unsigned int,class wxSizer *,int,int,int,class wxObject
  *)" (?Insert@wxSizer@@UAEXIPAV1@HHHPAVwxObject@@@Z)
wxMozillaWindow.obj : error LNK2001: unresolved external symbol "public: virtual
  void __thiscall wxSizer::Insert(unsigned int,int,int,int,int,int,class wxObject
  *)" (?Insert@wxSizer@@UAEXIHHHHHPAVwxObject@@@Z)
cstmdlg.obj : error LNK2001: unresolved external symbol "public: virtual void __
thiscall wxSizer::Insert(unsigned int,int,int,int,int,int,class wxObject *)" (?I
nsert@wxSizer@@UAEXIHHHHHPAVwxObject@@@Z)
wxMozillaWindow.obj : error LNK2001: unresolved external symbol "public: virtual
  void __thiscall wxSizer::AddStretchSpacer(int)" (?AddStretchSpacer@wxSizer@@UAE
XH@Z)
cstmdlg.obj : error LNK2001: unresolved external symbol "public: virtual void __
thiscall wxSizer::AddStretchSpacer(int)" (?AddStretchSpacer@wxSizer@@UAEXH@Z)
wxMozillaWindow.obj : error LNK2001: unresolved external symbol "public: virtual
  void __thiscall wxSizer::AddSpacer(int)" (?AddSpacer@wxSizer@@UAEXH@Z)
cstmdlg.obj : error LNK2001: unresolved external symbol "public: virtual void __
thiscall wxSizer::AddSpacer(int)" (?AddSpacer@wxSizer@@UAEXH@Z)
wxMozillaWindow.obj : error LNK2001: unresolved external symbol "public: virtual
  void __thiscall wxSizer::Add(class wxWindow *,int,int,int,class wxObject *)" (?
Add@wxSizer@@UAEXPAVwxWindow@@HHHPAVwxObject@@@Z)
cstmdlg.obj : error LNK2001: unresolved external symbol "public: virtual void __
thiscall wxSizer::Add(class wxWindow *,int,int,int,class wxObject *)" (?Add@wxSi
zer@@UAEXPAVwxWindow@@HHHPAVwxObject@@@Z)
wxMozillaWindow.obj : error LNK2001: unresolved external symbol "public: virtual
  void __thiscall wxSizer::Add(class wxSizer *,int,int,int,class wxObject *)" (?A
dd@wxSizer@@UAEXPAV1@HHHPAVwxObject@@@Z)
cstmdlg.obj : error LNK2001: unresolved external symbol "public: virtual void __
thiscall wxSizer::Add(class wxSizer *,int,int,int,class wxObject *)" (?Add@wxSiz
er@@UAEXPAV1@HHHPAVwxObject@@@Z)
wxMozillaWindow.obj : error LNK2001: unresolved external symbol "public: virtual
  void __thiscall wxSizer::Add(int,int,int,int,int,class wxObject *)" (?Add@wxSiz
er@@UAEXHHHHHPAVwxObject@@@Z)
cstmdlg.obj : error LNK2001: unresolved external symbol "public: virtual void __
thiscall wxSizer::Add(int,int,int,int,int,class wxObject *)" (?Add@wxSizer@@UAEX
HHHHHPAVwxObject@@@Z)
wxMozillaWindow.obj : error LNK2001: unresolved external symbol "public: virtual
  void __thiscall wxSizer::Add(class wxSizerItem *)" (?Add@wxSizer@@UAEXPAVwxSize
rItem@@@Z)
cstmdlg.obj : error LNK2001: unresolved external symbol "public: virtual void __
thiscall wxSizer::Add(class wxSizerItem *)" (?Add@wxSizer@@UAEXPAVwxSizerItem@@@
Z)
build\lib.win32-2.3\wx\_mozilla.pyd : fatal error LNK1120: 17 unresolved externa
ls

Kevin Ollivier wrote:

When I do this, at the mozilla_wrap.cpp linking phase, I get a bunch of wxSizer undefineds. It is linking to <wxPython-src>/lib/vc_dll/wxmsw25h.lib, BTW. The only common thread I can see is that they're all inline functions. Below is the error messages MSVC6 spit out. AFAICT these functions aren't something that should get conditionally compiled, so I'm a bit stumped as to why these symbols are showing up as undefined... Any guess as to what may be going on?

IIRC, inline functions will have a real function generated when compiling in debug mode (or when debug info is generated or something like that) so if your build is setting debug flags then it may be expecting to find real functions for those inlines and they are not there.

···

--
Robin Dunn
Software Craftsman
http://wxPython.org Java give you jitters? Relax with wxPython!

Hi Robin,

Kevin Ollivier wrote:

When I do this, at the mozilla_wrap.cpp linking phase, I get a bunch of wxSizer undefineds. It is linking to <wxPython-src>/lib/vc_dll/wxmsw25h.lib, BTW. The only common thread I can see is that they're all inline functions. Below is the error messages MSVC6 spit out. AFAICT these functions aren't something that should get conditionally compiled, so I'm a bit stumped as to why these symbols are showing up as undefined... Any guess as to what may be going on?

IIRC, inline functions will have a real function generated when compiling in debug mode (or when debug info is generated or something like that) so if your build is setting debug flags then it may be expecting to find real functions for those inlines and they are not there.

Thanks for your help! It turned out that it was an oversight on my part - I had forgotten that for some reason, distutils compiles the wxMozilla object files outside of the "build" folder and thus I need to remove them separately.

Anyways, thanks again, it's all building now and I've made the necessary mods to get it working with multi-install builds. :slight_smile:

Kevin

···

On Dec 3, 2004, at 11:13 AM, Robin Dunn wrote:

--
Robin Dunn
Software Craftsman
http://wxPython.org Java give you jitters? Relax with wxPython!

---------------------------------------------------------------------
To unsubscribe, e-mail: wxPython-dev-unsubscribe@lists.wxwidgets.org
For additional commands, e-mail: wxPython-dev-help@lists.wxwidgets.org