|
Boost Users : |
Subject: [Boost-users] Fwd: Cross Compilation problem
From: Jose (jc.fernandez.navarro_at_[hidden])
Date: 2011-10-05 15:25:22
Problem solved thanks to Dominik Schmidt for his help.
mingw32-boost package in fedora and centos has a directory called bin where
all the dlls are located. I just needed to copy and dlls that my program is
using to the installation folder in windows.
Regards
Jose
---------- Forwarded message ----------
From: Jose <jc.fernandez.navarro_at_[hidden]>
Date: 2011/10/5
Subject: Cross Compilation problem
To: boost-users_at_[hidden]
Hello all,
I have been struggling with this problem for 2 days and I cannot really find
a solution.
I have a c++ application that I want to cross compile under Fedora 15 to
use it with Windows.
The packages that my app depends on are already pre-compiled in :
/usr/i686-mingw32...../
I am using CMake. It compiles okay and I generate the .exe file without
problems.
When I try to run it under Windows it complains :
"The program cant start because boost_filesystem-gcc45-mt-1_46_1.dll
ins missing......."
I have boost 1.47 installed in the windows machine but the libraries have a
different suffix (...vc-xx-mt...)
When I cross compile I do it statically ( I am attaching my
toolchain-mingw32 file )
My question is, why is the exe program looking for the boost dll with
exactly the same name as it has in the linux
machine where the cross compiled exe has been built from??
In my fedora mingw32 lib folder the boost libraries look like this :
libboost_filesystem-gcc45-mt-1_46_1.dll·a
Is there any way to tell cmake to disregard those suffixes while running in
Windows?
Is there any way to tell cmake to copy the boost libraries needed for my
application into a local folder that will be included
inside the the windows installer??
Also while cross compiling I had gotten this error :
In file included
from /usr/i686-pc-mingw32/sys-root/mingw/include/boost/functional/hash/detail/hash_float.hpp:17,
from /usr/i686-pc-mingw32/sys-root/mingw/include/boost/functional/hash/hash.hpp:15,
from /usr/i686-pc-mingw32/sys-root/mingw/include/boost/functional/hash.hpp:6,
from /usr/i686-pc-mingw32/sys-root/mingw/include/boost/unordered/unordered_set.hpp:17,
from /usr/i686-pc-mingw32/sys-root/mingw/include/boost/unordered_set.hpp:16,
from /mnt/VirtualBoxShare/percolator/src/ProteinProbEstimatorHelper.h:33,
from /mnt/VirtualBoxShare/percolator/src/ProteinProbEstimator.cpp:28:
/usr/i686-pc-mingw32/sys-root/mingw/include/boost/cstdint.hpp:105:
error: expected unqualified-id before 'unsigned'
/usr/i686-pc-mingw32/sys-root/mingw/include/boost/cstdint.hpp:105:
error: expected ';' before 'unsigned'
/usr/i686-pc-mingw32/sys-root/mingw/include/boost/cstdint.hpp:105:
error: declaration does not declare anything
/usr/i686-pc-mingw32/sys-root/mingw/include/boost/cstdint.hpp:114:
error: expected unqualified-id before 'unsigned'
/usr/i686-pc-mingw32/sys-root/mingw/include/boost/cstdint.hpp:114:
error: expected ';' before 'unsigned'
/usr/i686-pc-mingw32/sys-root/mingw/include/boost/cstdint.hpp:114:
error: declaration does not declare anything
It seemed boost defines a typedf in cstdint that is already defined in
somewhere else, I would guess it is because the windows flag is
activated
even though it is compiling under linux. I fixed it checking it the
definition has been made already but this is not a proper solution.
Is it maybe that definition in my code or another cross compiled library?
Thank you so much
Jose
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net