Author Topic: [solved] codeblocks 13.12 & wxWidgets 3.0 config, ld.exe cannot find -lwxmsw30u?  (Read 62183 times)

Offline Aaron

  • Multiple posting newcomer
  • *
  • Posts: 59
Quote
So you've failed to set you wx global variable and thus the path is invalid.
Settings -> Global variables -> wx -> set proper paths

Failed to set them correctly anyway. 
What additions or changes would you recommended from here.


I could not find folders for the empty fields obj, bin, cflags, and iflags.

Everything was working yesterday until I began chasing errors in one project, now I the error:
ld.exe||cannot find -lwxmsw30d_core|
« Last Edit: March 07, 2015, 05:26:36 am by Aaron2 »

Offline Jenna

  • Administrator
  • Lives here!
  • *****
  • Posts: 7252
Normally, you don't need to set anything but the base-path.

Offline Aaron

  • Multiple posting newcomer
  • *
  • Posts: 59
I just finished removing all traces of wxWidgets from my problem pc, then compiled a fresh copy.

A simple new project test still produces:
ld.exe        cannot find -lwxmsw30d_core

I have his dialog at the end of the new project wizard also.
« Last Edit: March 07, 2015, 05:57:28 am by Aaron2 »

Offline MortenMacFly

  • Administrator
  • Lives here!
  • *****
  • Posts: 9693
Well of course you not only need the sources of wxWidgets but also the compiled libs... Compiled preferably with the target compiler of your project. Consult the wx docs how to do so.you'll also find some hints in the x::B wiki.
Compiler logging: Settings->Compiler & Debugger->tab "Other"->Compiler logging="Full command line"
C::B Manual: https://www.codeblocks.org/docs/main_codeblocks_en.html
C::B FAQ: https://wiki.codeblocks.org/index.php?title=FAQ

Offline Aaron

  • Multiple posting newcomer
  • *
  • Posts: 59
UPDATE

I determined that the file libwxmsw30u.a was missing from the C:\wxWidgets-3.0.2\lib\gcc_dll directory, so I copied and pasted it from another pc with wxWidgets & CodeBlocks which operates and builds as properly.

Now, this is the latest build log:
Code
-------------- Build: Debug in 6Martest (compiler: GNU GCC Compiler)---------------

mingw32-g++.exe -LC:\wxWidgets-3.0.2\lib\gcc_dll -LC:\wxWidgets-3.0.2\lib\gcc_dll -o bin\Debug\6Martest.exe obj\Debug\_MartestApp.o obj\Debug\_MartestMain.o  obj\Debug\resource.res -mthreads  -lwxmsw30u -mwindows
Warning: .drectve `-aligncomm:"___hexdig_D2A",5' unrecognized
/mingw/lib/libmingw32.a(setargv.o):(.text+0x30): undefined reference to `___chkstk_ms'
/mingw/lib/libmingwex.a(glob.o):(.text+0x673): undefined reference to `___chkstk_ms'
/mingw/lib/libmingwex.a(glob.o):(.text+0x7e0): undefined reference to `___chkstk_ms'
/mingw/lib/libmingwex.a(glob.o):(.text+0x81d): undefined reference to `___chkstk_ms'
/mingw/lib/libmingwex.a(glob.o):(.text+0x934): undefined reference to `___chkstk_ms'
/mingw/lib/libmingwex.a(glob.o):(.text+0xb78): more undefined references to `___chkstk_ms' follow
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minute(s), 9 second(s))
6 error(s), 1 warning(s) (0 minute(s), 9 second(s))

Then I realized I had an old MinGW installed im my C:\ directory, renamed it 'zz_MinGW', and the build is successful.
« Last Edit: March 07, 2015, 06:06:47 pm by Aaron2 »

Raf20076

  • Guest
UPDATE

I determined that the file libwxmsw30u.a was missing from the C:\wxWidgets-3.0.2\lib\gcc_dll directory, so I copied and pasted it from another pc with wxWidgets & CodeBlocks which operates and builds as properly.

>:( Are you kidding me?


Sollution for cannot find -lwxmsw30ud (or lwxmsw31ud, lwxmsw32ud, lwxmsw33ud for the future)

OK! I assume that your wxWidgets 3.1.0 project is opened now in codeblocks
and before you compiled wxWidgets 3.1.0 on your computer

In menu click ->  Project -> Build options....
In Project build options window select
-> Debug (Select compiler -> GNU GCC Compiler)
In Linker settings -> (in Policy select -> Prepend target options to project options)
In Link Librarias select lwxmsw30ud and click Edit button, then change name for lwxmsw31ud click OK then again
In Link Librarias click button Add and type libshlwapi.a click OK then again
In Link Librarias click button Add and type libversion.a click OK then again

In Other link options paste

-lshlwapi
-lversion

In Project build options window select
-> Release (Select compiler -> GNU GCC Compiler)
Select Linker settings and in Link Librarias select lwxmsw30u and click Edit button, then change name for lwxmsw31u click OK

then click OK closing window

In Menu click -> Settings -> Global variables
In Global variable editor window select
In base select folder where your wxWidget is installed usually C:\wxWidgets
In include select folder inlude in your wxWidget folder, usually C:\wxWidgets\include
In lib select folder lib in your wxWidget folder usually C:\wxWidgets\lib

and that's it ;D you don't have to dig a hole using a spoon. I hope i helped





« Last Edit: October 31, 2016, 07:12:45 am by Raf20076 »

Offline alfredfvj

  • Single posting newcomer
  • *
  • Posts: 7
Hello,

I am just starting to learn using Code::Blocks with wxWidgets 3.2.

My original error upon building was ld.exe cannot find -lwxmsw32u. I followed all your instructions and it seemed to work in solving that original error.  However, I am now getting the error:

ld.exe cannot find -llwxmsw32ud (it added an extra "l" as a prefix.

I am really just starting with codeblocks and wxWidgets so please excuse me if this error is just due to my ignorance. I tried searching Google for answers but I wasn't able to find any solution. Any help will be appreciated.


Offline Miguel Gimenez

  • Developer
  • Lives here!
  • *****
  • Posts: 1634
The leading 'l' must be removed, just write libwxmsw32ud.a (or libwxmsw32u.a if you do not intend to debug wxWidgets itself).
Remember to put the path to the library in Search directories -> Linker

Offline alfredfvj

  • Single posting newcomer
  • *
  • Posts: 7
Hi Miguel, Thanks for your reply. 

How will I remove the extra "l" from ld.exe?

Please note that my Link libraries list does not have that extra "l". The entries there are as follows:

lwxmsm32ud
libshlwapi.a
libversion.a

I tried searching my project for "llwxmsm32ud" so that I can remove the extra "l" but it was not found.

This is the error message:

||=== Build: Debug in ClicsCP (compiler: tdm64Compile) ===|
ld.exe||cannot find -llwxmsw32ud|
||error: ld returned 1 exit status|
||=== Build failed: 2 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|





Offline Miguel Gimenez

  • Developer
  • Lives here!
  • *****
  • Posts: 1634
Quote
Please note that my Link libraries list does not have that extra "l". The entries there are as follows
Code
lwxmsm32ud
libshlwapi.a
libversion.a

Really? I see an extra 'l' as the very first character of your quote.

OTOH, are you sure you want to link with the debug version of wxWidgets?

EDIT: If this is a copy/paste of your setup, please note the "msm" instead of "msw"

Offline alfredfvj

  • Single posting newcomer
  • *
  • Posts: 7
I apologize for the typographical error.

My link library looks like this:

lwxmsw32ud
libshlwapi.a
libversion.a

The first line has only one "l" at the start.

My project is a wxWidget 3.1x with wxSmith as GUI builder and Frame based as Appllication Type.

I did not alter any codes generated by the wizard. I just clicked Build and Run button and I got the error : ld.exe||cannot find -llwxmsw32ud|

I did an experiment and included the extra "l" in my Link Library and made it consistent with what the Builder is looking for.  The first line now read like this:

llwxmsw32ud

The build error now reads like this:

||=== Build: Debug in ClicsCP (compiler: tdm64Compile) ===|
ld.exe||cannot find -lllwxmsw32ud|
||error: ld returned 1 exit status|
||=== Build failed: 2 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

Now there are three l's ("lll") at the beginning.

As to whether I really want to use the Debug version of wxWidgets, the honest answer is I don't really know. I have a very novice understanding of wxWidgets (and Code::Blocks) to make a reliable judgement on that having been exposed to it for just a few days. At this stage, I am just evaluating wxWidgets and wxSmith of Code::Blocks for use in converting a very large legacy application written in MS VFP. From the little that I've seen from Google search, the controls of wxWidgets seem to resemble closely those of VFP. And wxSmith is close enough with the GUI IDE of VFP.

The application that I will be converting has a lot of complex nested iterations and from what I gathered from articles about wxWidgets, the Debug mode will be a useful tool in this type of application. This conclusion of course, is coming from a very little informed perspective and if I will just be exposing myself to undue difficulties, I can do away with the Debug mode. Can I have your opinion on this as well?

Again, thank you very much for your patience. Your reply will be greatly appreciated.







Offline Miguel Gimenez

  • Developer
  • Lives here!
  • *****
  • Posts: 1634
Remove the leading 'l' and replace the wxWidgets's debug library with the production one. Write exactly this:
Code
libwxmsw32u.a
libshlwapi.a
libversion.a

You do not need the debug version unless you intend to debug wxWidgets itself.

Offline alfredfvj

  • Single posting newcomer
  • *
  • Posts: 7
As you suggested, I created a new project without the Debug option. My Build Options now only has Release.

Under the Link Library I entered libwxmsw32u and got the error message:

ld.exe  cannot find -lwxmsw32u

Next I tried libwxmsw32u.a and got the same error.

Then I tried including libshlwapi.a and libversion.a and still got the same error.

Is it possible that this is because I'm creating a wxWingets 3.1 project while my wxWidgets is version 3.2?  The code:blocks wizard does not include the option to choose version 3.2.  Does code::blocks nightly build version have this option?  Or maybe I can just install a 3.1 version of WxWidgets.

I will try exploring these options tomorrow (it's getting late in this part of the world and I still have some work to finish). 

Thank you very much for your help.


Offline Miguel Gimenez

  • Developer
  • Lives here!
  • *****
  • Posts: 1634
Remember to put the path to the library in Search directories -> Linker

Offline TeMaToS

  • Single posting newcomer
  • *
  • Posts: 1
I had similar issue and spent a loooot of time to fix it and the answer was not found I was able to figure that out by myself.
The issue was related to usage of MinGW inside CodeBlocks folder when compiling project and for compiling wxWidgets I was used MinGW that was installed separately.
Hope that at least it will help someone with similar issue.

Also it is possible that newer/older version of MinGW is incompatible.
« Last Edit: February 09, 2024, 06:42:25 pm by TeMaToS »