In my past email I made a mistake, the ICU configure method I use was
a) ./configure --prefix=/mingw/ --enable-static --disable-shared --disable-strict --disable-threads
and not
b) ./configure --prefix=/mingw/ --disable-strict --disable-threads

The a) configure command generates a boost_regex-mt.lib of around 3.5MB. I use the b) command first, but that gives me a boost_regex-mt.lib of about 2MB, and got compilation errors with the freeling library about icu methods not found, for example u_tolower_42.



From: soloninguno@hotmail.com
To: boost-users@lists.boost.org
Subject: Boost + ICU in Windows with MinGW
Date: Mon, 28 Feb 2011 15:42:32 -0300

Hi mates,

I have a question about boost compiled with icu support for using it in another library (freeling). All this work is in windows using mingw32, the icu 4.2.1 library and boost 1_40.

I compile boost with the following bjam line
$ bjam toolset=gcc variant=release threading=multi threadapi=win32 link=shared runtime-link=shared --prefix=$PREFIX --user-config=tools/build/v2/user-config.jam -j 2 --with-filesystem --with-program_options --with-regex define=U_STATIC_IMPLEMENTATION=1 -sHAVE_ICU=1 -sNO_BZIP2=1 -sNO_ZLIB=1 --layout=tagged -a --build-type=complete stage

I applied the following patch before compilation, without it I don't get the boost_regex-mt.lib and boost_regex_mt.dll, but the libboost_regex-mt.lib.
https://build.opensuse.org/package/view_file?file=boost-regexdll.patch&package=mingw32-boost&project=windows%3Amingw%3Awin32&srcmd5=561592621be0390a05766ba9ae4d390a

This compilation works great, and also the compilation of the freeling library, which generates an exe. But after that, If I try to run the generated exe (with the boost dlls ) I get this error

terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<std::runtime_error> >
  what():  Could not initialize ICU resources

Could anyone help me undersanding this error? I suppose it has something to do with some missing ICU files, and I'm sure i make some mistake in the compilation process but I didn't get where is it. I also tried building boost with link=static runtime-link=static, but of course if I do that I don't get the boost_regex-mt.lib but the libbost_regex-mt.lib (and i need the dynamic library for compilation of the freeling library).

I now this is not the ICU forum, but if it helps for catching the problem ICU was compiled this way
a) apply some diffs from this patch http://devs.openttd.org/~terkhen/libicu/libicu_4_6_mingw32.diff (reference link http://wiki.openttd.org/Compiling_on_MinGW#Compiling_libicu), to make it compile in MinGW (not all cause there are some difference between icu 4.2.1 and 4.6).
b) After that run
$ ./configure --prefix=/mingw/ --disable-strict --disable-threads
$ make install
This compilation doesn't generate any dll, only the libs for making boost compile.

Thanks in advance and best regards, and sorry if this mails is a mess, I only try to give all the information I think is useful.