News:

Accounts with zero posts and zero activity during the last months will be deleted periodically to fight SPAM!

Main Menu

wxWidgets-2.8.7 not linking

Started by Zoom, April 20, 2008, 09:15:40 PM

Previous topic - Next topic

Zoom

I have installed new library wxWidgets-2.8.7 but it has now for some reason new names in "a" files:

libwxbase28.a
libwxbase28_net.a
libwxbase28_xml.a
libwxexpat.a
libwxjpeg.a
libwxmsw28_adv.a
libwxmsw28_aui.a
libwxmsw28_core.a
libwxmsw28_html.a
libwxmsw28_media.a
libwxmsw28_richtext.a
libwxmsw28_xrc.a
libwxpng.a
libwxregex.a
libwxtiff.a
libwxzlib.a

I tried to change in "Link Libraries" but the project not linking...

Or how to me to compile wxWidgets-2.8.7 (WinXP & MinGW) so that at it there were former names?
libwxexpat.a
libwxjpeg.a
libwxmsw28.a
libwxpng.a
libwxregex.a
libwxtiff.a
libwxzlib.a

Thanks for help!

Deschamps

All those 'libwx*' libraries are built in that manner when you compile your wxMSW sources without specifying a monolithic build.
So, rebuilding your libraries with the 'MONOLITHIC=1' parameter will do the job.

You could also consider building shared libraries, so your binaries could be smaller.

Regads.
Those who were seen dancing were thought to be insane by those who could not hear the music

Zoom

Deschamps, Thanks!
I have compiled:
mingw32-make-f makefile.gcc BUILD=release MONOLITHIC=1
Now all works!

Zoom

I have tried to compile still as you have advised build with shared libraries

mingw32-make-f makefile.gcc BUILD=release SHARED=1 MONOLITHIC=1 UNICODE=0
--
libwxexpat.a
libwxjpeg.a
libwxmsw28.a
libwxpng.a
libwxregex.a
libwxtiff.a
libwxzlib.a
wxmsw28_gcc_custom.dll
--
Then I have made the new project with settings:

wxWidgets Library Settings

X Use wxWidgets DLL
X wxWidgets Is built as a monolithic library
_ Enable Unicode




But linker prints already new errors...


-------------- Build: Release in test3 ---------------

Linking executable: bin\Release\test3.exe
obj\Release\test3Main.o(.text+0x763):test3Main.cpp: undefined reference to `wxFont::~wxFont()'
obj\Release\test3Main.o(.text+0x77d):test3Main.cpp: undefined reference to `wxFont::SetPointSize(int)'
obj\Release\test3Main.o(.text+0x11cd):test3Main.cpp: undefined reference to `wxWindowBase::SetSizer(wxSizer*, bool)'
obj\Release\test3Main.o(.text+0x1297):test3Main.cpp: undefined reference to `wxFont::~wxFont()'
obj\Release\test3Main.o(.text+0x158f):test3Main.cpp: undefined reference to `_imp___ZN9wxControlD2Ev'
obj\Release\test3Main.o(.text+0x15a6):test3Main.cpp: undefined reference to `wxFont::~wxFont()'
obj\Release\test3Main.o(.text+0x15be):test3Main.cpp: undefined reference to `wxFont::~wxFont()'
obj\Release\test3Main.o(.text+0x16cc):test3Main.cpp: undefined reference to `_imp___ZN9wxControlD2Ev'
obj\Release\test3Main.o(.text+0x1774):test3Main.cpp: undefined reference to `_imp___ZN9wxControlD2Ev'
obj\Release\test3Main.o(.text+0x1861):test3Main.cpp: undefined reference to `_imp___ZN9wxControlD2Ev'
obj\Release\test3Main.o(.text+0x1f53):test3Main.cpp: undefined reference to `wxFont::~wxFont()'
obj\Release\test3Main.o(.text+0x1f6d):test3Main.cpp: undefined reference to `wxFont::SetPointSize(int)'
obj\Release\test3Main.o(.text+0x29bd):test3Main.cpp: undefined reference to `wxWindowBase::SetSizer(wxSizer*, bool)'
obj\Release\test3Main.o(.text+0x2a87):test3Main.cpp: undefined reference to `wxFont::~wxFont()'
obj\Release\test3Main.o(.text+0x2d7f):test3Main.cpp: undefined reference to `_imp___ZN9wxControlD2Ev'
obj\Release\test3Main.o(.text+0x2d96):test3Main.cpp: undefined reference to `wxFont::~wxFont()'
obj\Release\test3Main.o(.text+0x2dae):test3Main.cpp: undefined reference to `wxFont::~wxFont()'
obj\Release\test3Main.o(.text+0x2ebc):test3Main.cpp: undefined reference to `_imp___ZN9wxControlD2Ev'
obj\Release\test3Main.o(.text+0x2f64):test3Main.cpp: undefined reference to `_imp___ZN9wxControlD2Ev'
obj\Release\test3Main.o(.text+0x3051):test3Main.cpp: undefined reference to `_imp___ZN9wxControlD2Ev'
obj\Release\test3Main.o(.text+0x326c):test3Main.cpp: undefined reference to `wxWindowBase::Close(bool)'
obj\Release\test3Main.o(.rdata$_ZTV11test3Dialog+0x24):test3Main.cpp: undefined reference to `wxWindowBase::TryValidator(wxEvent&)'
obj\Release\test3Main.o(.rdata$_ZTV11test3Dialog+0x28):test3Main.cpp: undefined reference to `wxWindowBase::TryParent(wxEvent&)'
obj\Release\test3Main.o(.rdata$_ZTV11test3Dialog+0x4c):test3Main.cpp: undefined reference to `wxWindow::GetLabel() const'
obj\Release\test3Main.o(.rdata$_ZTV11test3Dialog+0x58):test3Main.cpp: undefined reference to `wxWindow::GetLayoutDirection() const'
obj\Release\test3Main.o(.rdata$_ZTV11test3Dialog+0x60):test3Main.cpp: undefined reference to `wxWindow::AdjustForLayoutDirection(int, int, int) const'
obj\Release\test3Main.o(.rdata$_ZTV11test3Dialog+0x68):test3Main.cpp: undefined reference to `wxWindow::Lower()'
obj\Release\test3Main.o(.rdata$_ZTV11test3Dialog+0x6c):test3Main.cpp: undefined reference to `wxWindowBase::GetClientAreaOrigin() const'
obj\Release\test3Main.o(.rdata$_ZTV11test3Dialog+0x70):test3Main.cpp: undefined reference to `wxWindowBase::Fit()'
obj\Release\test3Main.o(.rdata$_ZTV11test3Dialog+0x74):test3Main.cpp: undefined reference to `wxWindowBase::FitInside()'
obj\Release\test3Main.o(.rdata$_ZTV11test3Dialog+0x98):test3Main.cpp: undefined reference to `wxWindowBase::DoGetVirtualSize() const'
obj\Release\test3Main.o(.rdata$_ZTV11test3Dialog+0xa0):test3Main.cpp: undefined reference to `wxWindowBase::GetWindowBorderSize() const'
obj\Release\test3Main.o(.rdata$_ZTV11test3Dialog+0xb4):test3Main.cpp: undefined reference to `wxWindowBase::IsShownOnScreen() const'
obj\Release\test3Main.o(.rdata$_ZTV11test3Dialog+0xb8):test3Main.cpp: undefined reference to `wxWindow::SetWindowStyleFlag(long)'
obj\Release\test3Main.o(.rdata$_ZTV11test3Dialog+0xc4):test3Main.cpp: undefined reference to `wxWindow::SetExtraStyle(long)'
obj\Release\test3Main.o(.rdata$_ZTV11test3Dialog+0xc8):test3Main.cpp: undefined reference to `wxWindowBase::MakeModal(bool)'
obj\Release\test3Main.o(.rdata$_ZTV11test3Dialog+0xd8):test3Main.cpp: undefined reference to `wxWindow::SetFocusFromKbd()'
obj\Release\test3Main.o(.rdata$_ZTV11test3Dialog+0xe4):test3Main.cpp: undefined reference to `wxWindowBase::Navigate(int)'
obj\Release\test3Main.o(.rdata$_ZTV11test3Dialog+0xec):test3Main.cpp: undefined reference to `wxWindow::Reparent(wxWindowBase*)'
obj\Release\test3Main.o(.rdata$_ZTV11test3Dialog+0xf0):test3Main.cpp: undefined reference to `wxWindowBase::AddChild(wxWindowBase*)'
obj\Release\test3Main.o(.rdata$_ZTV11test3Dialog+0xf8):test3Main.cpp: undefined reference to `wxWindowBase::SetValidator(wxValidator const&)'
obj\Release\test3Main.o(.rdata$_ZTV11test3Dialog+0x100):test3Main.cpp: undefined reference to `wxWindowBase::Validate()'
obj\Release\test3Main.o(.rdata$_ZTV11test3Dialog+0x104):test3Main.cpp: undefined reference to `wxWindowBase::TransferDataToWindow()'
obj\Release\test3Main.o(.rdata$_ZTV11test3Dialog+0x108):test3Main.cpp: undefined reference to `wxWindowBase::TransferDataFromWindow()'
obj\Release\test3Main.o(.rdata$_ZTV11test3Dialog+0x10c):test3Main.cpp: undefined reference to `wxWindowBase::InitDialog()'
obj\Release\test3Main.o(.rdata$_ZTV11test3Dialog+0x114):test3Main.cpp: undefined reference to `wxWindow::RegisterHotKey(int, int, int)'
obj\Release\test3Main.o(.rdata$_ZTV11test3Dialog+0x118):test3Main.cpp: undefined reference to `wxWindow::UnregisterHotKey(int)'
obj\Release\test3Main.o(.rdata$_ZTV11test3Dialog+0x11c):test3Main.cpp: undefined reference to `wxWindow::WarpPointer(int, int)'
obj\Release\test3Main.o(.rdata$_ZTV11test3Dialog+0x128):test3Main.cpp: undefined reference to `wxWindow::Update()'
obj\Release\test3Main.o(.rdata$_ZTV11test3Dialog+0x12c):test3Main.cpp: undefined reference to `wxWindowBase::ClearBackground()'
Process terminated with status 1 (0 minutes, 18 seconds)
50 errors, 0 warnings

dje

Hi !

Quote from: Zoom on April 21, 2008, 12:13:27 AM
mingw32-make-f makefile.gcc BUILD=release SHARED=1 MONOLITHIC=1 UNICODE=0
...
_ Enable Unicode

You have to compile wxWidgets with UNICODE=1
mingw32-make-f makefile.gcc BUILD=release SHARED=1 MONOLITHIC=1 UNICODE=1

Dje

Zoom

Hi, Dje!
Has compiled with UNICODE=1, the same result...
Maybe error in gcc?
What version gcc you will recommend?
Or to download Code::Blocks together with MinGW - codeblocks-8.02mingw-setup.exe?
--

mingw32-g++.exe -v
Reading specs from C:/MinGWStudio/MinGW/bin/../lib/gcc-lib/mingw32/3.3.1/specs
Configured with: ../gcc/configure --with-gcc --with-gnu-ld --with-gnu-as --host=
mingw32 --target=mingw32 --prefix=/mingw --enable-threads --disable-nls --enable
-languages=c,c++,f77,objc,ada,java --disable-win32-registry --disable-shared --e
nable-sjlj-exceptions --enable-libgcj --disable-java-awt --without-x --enable-ja
va-gc=boehm --disable-libgcj-debug --enable-interpreter --enable-hash-synchroniz
ation
Thread model: win32
gcc version 3.3.1 (mingw special 20030804-1)


dje

Hi !

"Official" version is 3.4.5 on XP.
You can download a working version on C::B site (Vista compatible).

Dje

Deschamps

#7
Quote from: Zoom on April 21, 2008, 03:14:25 AMMaybe error in gcc?
What version gcc you will recommend?
Or to download Code::Blocks together with MinGW - codeblocks-8.02mingw-setup.exe?

It seems to me like a wrong config in your project, so the linker hasn't been able to find the wxWidgets shared libraries. If you have built and are using different versions (different combinations with shared/static, debug/release, unicode/non-unicode, etc), try to specify the path to the appropiate build in your 'Linker search path' project' options for each case. And remember to update the libraries names used in your project if you want to recompile the same project against different versions (for instance: debug libraries have a "d" added to their name, unicode ones have an "u", and so)... or add a new target build.

And also, bear in mind that using shared libraries you'll need to have a copy of your wxMSW dll's somewhere inside your system path, so the app can use them when running.

In regards to the gcc version, I'm using also 3.4.5 in Windows and all is running fine (I'm using C::B svn version -i.e. built from the svn sources-)

Regards.
Those who were seen dancing were thought to be insane by those who could not hear the music

Zoom

I even specified a full path and name "C:\wxWidgets-2.8.7\lib\gcc_dll\libwxmsw28u.a" to library in 'Linker search directories' аnd also has created the new project which supports unicode...
аnd certainly I have copy 'dll' in a system path...
I will try now gcc 3.4.5
if it will be interesting to you I soon write here about results...

Seronis

Quote from: Zoom on April 21, 2008, 03:34:46 PM
I even specified a full path and name "C:\wxWidgets-2.8.7\lib\gcc_dll\libwxmsw28u.a" to library in 'Linker search directories' аnd also has created the new

well you put a file where it is asking for a directory.

C:\wxWidgets-2.8.7\lib\gcc_dll

needs to be in the linker search directory and

wxmsw28u

needs to be in the included libs

Zoom

Thanks all for the help, error was all the same in gcc!
I have now installed gcc 3.4.5(codeblocks-8.02mingw-setup.exe) and have compiled anew wxWidgets
All works, only two small errors - gcc was independent has not found сс1.exe and an error with a resource...
C:\wxWidgets-2.8.7\include\wx\msw\wx.rc:16: windows.h: No such file or directory

marco_silva85

I have also the same problem:
wx\msw\wx.rc:9: No such file or directory

workaround?