[SOLVED] QT and boost : cannot find -llibboost_filesystem...
-
wrote on 23 Apr 2015, 08:56 last edited by
Hi zarachbaal,
for your includes
#include <boost/thread.hpp> #include <boost/property_tree/json_parser.hpp> #include <boost/asio.hpp> #include <boost/thread.hpp>
you dont need boost_filesystem. Asio generates the errors.
"undefined reference to WSAStartup@8" "undefined reference to boost::system::generic_category()"
Asio needs to be link against to additional libraries. Add to your
LIBS +=
1.) Boost_system:-LC:/path/to/boost/libs
and-llibboost_system-mgw48-mt-1_52
2.) On Windows, WS2_32.lib:-LC:/path/to/winsock2/lib
and-lWS2_32
This is tested with boost 1_57 and mingw49 on my win7 system.
Hope it helps. -
wrote on 23 Apr 2015, 09:23 last edited by
The errors about WSAStartup@8, WSACleanup@0... disappeared, that's a start !
But I still have a bunch of undefined reference errors.
A lot have "thread" in their name like :undefined reference to `_imp___ZN5boost6threadC1Ev' undefined reference to `_imp___ZN5boost6thread4joinEv'
So I guess I also have to add the 'libboost_thread-mgw48-mt-1_52' library ?
But I only have '.a' files in 'stage/lib' (no '.dll" or '.dll.a' files), and if I do '-llibbost_thread-mgw48-mt-1_52' it says it cannot find the library
Maybe the lack of '.dll' and '.dll.a' is due to the 'failed updating 32 targets' when I built boost ?Also, I still have some
undefined reference to boost::system::generic_category()
undefined reference to boost::system::system_category() -
wrote on 23 Apr 2015, 09:44 last edited by
I forgot to say, that I had to reorder the header includes to get a build.
#include <boost/asio.hpp> #include <boost/property_tree/json_parser.hpp> #include <boost/thread.hpp>
-
wrote on 23 Apr 2015, 09:46 last edited by
I can only suggest you talk with the one introducing boost (if you have to) and see whether you can get rid of it for obvious reasons. You will save yourself a lot of unnecessary work. Before trying that, I wouldn't investigate too much, this is lost time.
Other than that, I am out here.
-
wrote on 23 Apr 2015, 09:51 last edited by
@cybercatalyst
I agree, but this wont solve the problem. -
wrote on 23 Apr 2015, 09:54 last edited by
It does solve the problem, because you the errors you see are linker errors caused by boost. If you just stick to the Qt classes like intended, you will not have those.
-
@zarachbaal said:
undefined reference to `_imp___ZN5boost6threadC1Ev
Hi,
You're not linking to the boost_thread library.
You missing something like:
LIBS += -lboost_thread-mgw48-mt-1_52
or similar -
I can only suggest you talk with the one introducing boost (if you have to) and see whether you can get rid of it for obvious reasons. You will save yourself a lot of unnecessary work. Before trying that, I wouldn't investigate too much, this is lost time.
Other than that, I am out here.
wrote on 23 Apr 2015, 11:32 last edited byIn fact I'm using the EyeTribe eye tracking device and the SDK uses the boost library.
So I have no choice but using it. -
wrote on 23 Apr 2015, 11:45 last edited by cybercatalyst
No offense, but in that case you should contact their support instead asking here. I hope you understand, this is not something the community could/should help you with as the source of problems clearly is the usage of boost.
(in the sense to make them aware of their fault, you should request them to fix it)
-
No offense, but in that case you should contact their support instead asking here. I hope you understand, this is not something the community could/should help you with as the source of problems clearly is the usage of boost.
(in the sense to make them aware of their fault, you should request them to fix it)
wrote on 23 Apr 2015, 12:22 last edited byUsing boost and qt together is not uncommon. There are indeed some libraries in boost that have no equivalent replacement in qt. Sure this seems not to be a qt issue, but if you do not want to help, just leave it. I for one, as part of the community saved a lot of time looking at posts like this. And by the way the valuable answers have never been something like "dont do that" or "ask someone else".
-
@zarachbaal said:
undefined reference to `_imp___ZN5boost6threadC1Ev
Hi,
You're not linking to the boost_thread library.
You missing something like:
LIBS += -lboost_thread-mgw48-mt-1_52
or similarwrote on 23 Apr 2015, 12:26 last edited by@SGaist :
I added "-lboost_thread-mgw48-mt-1_52" at the end of my "LIBS +=..." line.
It finds the library but I still have those errors...I also changed the order of my includes as sneubert suggested but that did not help
I will contact them about this but I have to make it work on Qt for the next week...
-
wrote on 23 Apr 2015, 12:28 last edited by cybercatalyst
@sneubert said:
Using boost and qt together is not uncommon.
Yes, you are right! And it's the source for a whole bunch of unnecessary issues. That's why I find it important to state it's the wrong way to go. The fact that boost and qt are being used side-by-side comes from the misconception that people want to somehow get rid of Qt on non-GUI code in lower level stuff because Qt is GUI-only. This is very bad and it's important to remind that Qt is an application framework.
This is the only reason I am writing this and if it makes people to rethink then this has been very useful imo.
-
Did you check that the library name is correct ? I've based it on the ones you're already using so I might have missed something
-
Did you check that the library name is correct ? I've based it on the ones you're already using so I might have missed something
wrote on 23 Apr 2015, 12:41 last edited by@SGaist :
Yes I checked and the library is here, i even copy/pasted the name to be sure
Qt does find the library, if I enter a wrong library name it gives an error (error : cannot find "false_library_name")As I said before I only have "libboost_thread-mgw48-mt-1_52.a" file.
When I had '.a', '.dll' and '.dll.a' files for "libboost_system..."Maybe it has something to do about it ?
-
You can try adding
DEFINES += BOOST_THREAD_USE_LIB
-
wrote on 24 Apr 2015, 10:02 last edited by zarachbaal
@SGaist :
I just added your code, unfortunately it has no effect on the errors.
-
wrote on 24 Apr 2015, 11:30 last edited by
I checked my boost lib dir and I do have a libboost_thread-mgw... .dll and .lib so maybe you investigate the build of the boost libraries.
-
I checked my boost lib dir and I do have a libboost_thread-mgw... .dll and .lib so maybe you investigate the build of the boost libraries.
wrote on 24 Apr 2015, 14:37 last edited byI downloaded and built boost 1.58.
This time I do have '.a', '.dll' and '.dll.a' for libbost_thread...
But it does not change anythingI don't recall doing anything in particular but the errors about 'thread' are not the same anymore.
They were like :
undefined reference to _imp___ZN5boost6threadC1Ev'
undefined reference to _imp___ZN5boost6thread4joinEv'And now :
undefined reference to boost::thread::thread()'
undefined reference to boost::thread::joinable() const'I just noticed that I have another error :
cc1plus.exe:-1: erreur : note: initialized from here
file not found : cc1plus.exe -
wrote on 27 Apr 2015, 11:07 last edited by
cc1plus.exe is the cpp compiler invoked by gcc.
Do you have another MinGW installation on your system?
Maybe you have some references in your local or global PATH
environment variable pointing to the wrong MinGW bin dir? -
wrote on 28 Apr 2015, 08:18 last edited by
I have MinGW installed in C:/MinGW
And also the one that comes with Qt Creator.In my PATH I have set "C:\Qt\qtcreator-2.4.1\mingw\bin"
Nevermind, this error appeared because I changed the MinGW to use in Project options.
If I select the MinGW that comes with Qt Creator this error disappears.
13/29