Boost 1.34.0 Builds *Almost* Perfectly - 4 Failures with BJam [Regex/ICU-related]
Any ideas? I think they're related to ICU. I downloaded ICU 3.6 (the
latest). However, I am using this with VS2005, which was "rarely
tested" according to the website. Still, after converting the ICU
project to VS2005 and building, I had no build errors, but I do get
these link errors with boost, which all seem to be ICU-related. See
below:
--------------
D:\3rdparty\boost_1_34_0>call "C:\Program Files\Microsoft Visual Studio
8\VC\vcvarsall.bat" x86
Setting environment for using Microsoft Visual Studio 2005 x86 tools.
Building Boost.Regex with Unicode/ICU support enabled
Using ICU in D:\3rdparty\icu4c-3_6/include
...patience...
...patience...
...found 5406 targets...
...updating 10 targets...
msvc.link.dll
bin.v2\libs\regex\build\msvc-8.0\debug\threading-multi\boost_regex-vc80-
mt-gd-1_34.dll
bin.v2\libs\regex\build\msvc-8.0\debug\threading-multi\boost_regex-vc80-
mt-gd-1_34.lib
Creating library
bin.v2\libs\regex\build\msvc-8.0\debug\threading-multi\boost_regex-vc80-
mt-gd-1_34.lib and object
bin.v2\libs\regex\build\msvc-8.0\debug\threading-multi\boost_regex-vc80-
mt-gd-1_34.exp
icu.obj : error LNK2019: unresolved external symbol
"__declspec(dllimport) public: virtual __thiscall
icu_3_6::Locale::~Locale(void)" (__imp_??1Locale@icu_3_6@@UAE@XZ)
referenced in function
__unwindfunclet$??0icu_regex_traits_implementation@re_detail@boost@@QAE@
ABVLocale@icu_3_6@@@Z$0
icu.obj : error LNK2019: unresolved external symbol
"__declspec(dllimport) public: static class icu_3_6::Collator * __cdecl
icu_3_6::Collator::createInstance(class icu_3_6::Locale const &,enum
UErrorCode &)"
(__imp_?createInstance@Collator@icu_3_6@@SAPAV12@ABVLocale@2@AAW4UErrorC
ode@@@Z) referenced in function "public: __thiscall
boost::re_detail::icu_regex_traits_implementation::icu_regex_traits_impl
ementation(class icu_3_6::Locale const &)"
(??0icu_regex_traits_implementation@re_detail@boost@@QAE@ABVLocale@icu_3
_6@@@Z)
icu.obj : error LNK2019: unresolved external symbol
"__declspec(dllimport) public: __thiscall icu_3_6::Locale::Locale(class
icu_3_6::Locale const &)" (__imp_??0Locale@icu_3_6@@QAE@ABV01@@Z)
referenced in function "public: __thiscall
boost::re_detail::icu_regex_traits_implementation::icu_regex_traits_impl
ementation(class icu_3_6::Locale const &)"
(??0icu_regex_traits_implementation@re_detail@boost@@QAE@ABVLocale@icu_3
_6@@@Z)
icu.obj : error LNK2019: unresolved external symbol
"__declspec(dllimport) public: __thiscall icu_3_6::Locale::Locale(void)"
(__imp_??0Locale@icu_3_6@@QAE@XZ) referenced in function "public:
__thiscall boost::icu_regex_traits::icu_regex_traits(void)"
(??0icu_regex_traits@boost@@QAE@XZ)
icu.obj : error LNK2019: unresolved external symbol _u_tolower_3_6
referenced in function "public: unsigned __int64 __thiscall
boost::icu_regex_traits::lookup_classname(int const *,int const *)const
" (?lookup_classname@icu_regex_traits@boost@@QBE_KPBH0@Z)
icu.obj : error LNK2019: unresolved external symbol _u_toupper_3_6
referenced in function "public: int __thiscall
boost::icu_regex_traits::toupper(int)const "
(?toupper@icu_regex_traits@boost@@QBEHH@Z)
icu.obj : error LNK2019: unresolved external symbol _u_digit_3_6
referenced in function "public: bool __thiscall
boost::icu_regex_traits::isctype(int,unsigned __int64)const "
(?isctype@icu_regex_traits@boost@@QBE_NH_K@Z)
icu.obj : error LNK2019: unresolved external symbol _u_isspace_3_6
referenced in function "public: unsigned __int64 __thiscall
boost::icu_regex_traits::lookup_classname(int const *,int const *)const
" (?lookup_classname@icu_regex_traits@boost@@QBE_KPBH0@Z)
icu.obj : error LNK2019: unresolved external symbol _u_charFromName_3_6
referenced in function "public: class std::vector
Lawrence Spector wrote:
Any ideas? I think they're related to ICU. I downloaded ICU 3.6 (the latest). However, I am using this with VS2005, which was "rarely tested" according to the website. Still, after converting the ICU project to VS2005 and building, I had no build errors, but I do get these link errors with boost, which all seem to be ICU-related. See below:
Hmmm, I just tried building the latest ICU release with VC8 and it failed to build: the core part built OK, but the international components all failed to build, and it's those that are giving the errors you are seeing. I'm out of time now, but I'll look into this some more soon-ish... John.
Lawrence Spector wrote:
Any ideas? I think they're related to ICU. I downloaded ICU 3.6 (the latest). However, I am using this with VS2005, which was "rarely tested" according to the website. Still, after converting the ICU project to VS2005 and building, I had no build errors, but I do get these link errors with boost, which all seem to be ICU-related. See below:
Seems to work for me, modulo the fact that the ICU dll's seem not to get created by the VC project files for ICU: the .lib files work fine though. The only difference I see from your build is at the start where I see: Building Boost.Regex with Unicode/ICU support enabled Using ICU in C:\download\open\icu_3_6\icu/include WARNING: ICU shared common library not found in path. HINT: If the regex library fails to link then try again with the environment variable ICU_LINK set to contain the linker options required to link to ICU. Defaulting to look for libicuuc ... The warning about not finding icuuc is a bug in the Jamfile: but it's harmless, and the regex library goes on to build and link OK. I don't suppose you're building a 64-bit version of Boost and have 32-bit ICU libraries or something are you? Just a wild thought... HTH, John.
Thanks for the response. I'm building all 32-bit. The log I sent didn't echo the command I used to build. It was this: bjam -sICU_PATH=%ICU_PATH --toolset=msvc stage I have the environment variables ICU_PATH, BOOST_ROOT and PYTHON_ROOT set. I also tried setting ICU_LINK before I built the last time but it didn't seem to change anything. Any other build options that you recommend trying? Thanks, Lawrence -----Original Message----- From: boost-users-bounces@lists.boost.org [mailto:boost-users-bounces@lists.boost.org] On Behalf Of John Maddock Sent: Tuesday, May 22, 2007 4:54 AM To: boost-users@lists.boost.org Subject: Re: [Boost-users] Boost 1.34.0 Builds *Almost* Perfectly - 4Failureswith BJam [Regex/ICU-related] Lawrence Spector wrote:
Any ideas? I think they're related to ICU. I downloaded ICU 3.6 (the latest). However, I am using this with VS2005, which was "rarely tested" according to the website. Still, after converting the ICU project to VS2005 and building, I had no build errors, but I do get these link errors with boost, which all seem to be ICU-related. See below:
Seems to work for me, modulo the fact that the ICU dll's seem not to get created by the VC project files for ICU: the .lib files work fine though. The only difference I see from your build is at the start where I see: Building Boost.Regex with Unicode/ICU support enabled Using ICU in C:\download\open\icu_3_6\icu/include WARNING: ICU shared common library not found in path. HINT: If the regex library fails to link then try again with the environment variable ICU_LINK set to contain the linker options required to link to ICU. Defaulting to look for libicuuc ... The warning about not finding icuuc is a bug in the Jamfile: but it's harmless, and the regex library goes on to build and link OK. I don't suppose you're building a 64-bit version of Boost and have 32-bit ICU libraries or something are you? Just a wild thought... HTH, John. _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
Lawrence Spector wrote:
Thanks for the response. I'm building all 32-bit. The log I sent didn't echo the command I used to build. It was this:
bjam -sICU_PATH=%ICU_PATH --toolset=msvc stage
I have the environment variables ICU_PATH, BOOST_ROOT and PYTHON_ROOT set. I also tried setting ICU_LINK before I built the last time but it didn't seem to change anything. Any other build options that you recommend trying?
Not really :-( Can you build applications that link to ICU at all? Also remember that the ICU support is optional, you can build regex perfectly well without it, but of course that doesn't help if you need to use u32regex. So I guess my suggestions would be: 1) Double check that ICU built OK (it didn't for me with VC8), and that you have the expected dll's and lib's (icuuc.dll icuin.dll etc). 2) Check that you can build a simple program that uses ICU - there should be some examples that ship with that library you could try. 3) Try running bjam with the -d2 option so you can see what the command lines are. If those don't suggest something then I'm stuck, sorry :-( HTH, John.
I appreciate the help. I haven't gotten much further. I tried what you said. ICU built correctly and seems fine (I only did a very basic test). If I get more time, maybe I'll try it more in depth. It's not a killer as of the moment since we're not using u32regex with ICU *yet*, but we plan to use it soon. Again, I appreciate the help. If anyone finds a solution to this one, please let me know. Thanks, Lawrence -----Original Message----- From: boost-users-bounces@lists.boost.org [mailto:boost-users-bounces@lists.boost.org] On Behalf Of John Maddock Sent: Tuesday, May 22, 2007 1:13 PM To: boost-users@lists.boost.org Subject: Re: [Boost-users] Boost 1.34.0 Builds *Almost* Perfectly-4Failureswith BJam [Regex/ICU-related] Lawrence Spector wrote:
Thanks for the response. I'm building all 32-bit. The log I sent didn't echo the command I used to build. It was this:
bjam -sICU_PATH=%ICU_PATH --toolset=msvc stage
I have the environment variables ICU_PATH, BOOST_ROOT and PYTHON_ROOT set. I also tried setting ICU_LINK before I built the last time but it didn't seem to change anything. Any other build options that you recommend trying?
Not really :-( Can you build applications that link to ICU at all? Also remember that the ICU support is optional, you can build regex perfectly well without it, but of course that doesn't help if you need to use u32regex. So I guess my suggestions would be: 1) Double check that ICU built OK (it didn't for me with VC8), and that you have the expected dll's and lib's (icuuc.dll icuin.dll etc). 2) Check that you can build a simple program that uses ICU - there should be some examples that ship with that library you could try. 3) Try running bjam with the -d2 option so you can see what the command lines are. If those don't suggest something then I'm stuck, sorry :-( HTH, John. _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
Lawrence Spector wrote:
I appreciate the help. I haven't gotten much further. I tried what you said. ICU built correctly and seems fine (I only did a very basic test). If I get more time, maybe I'll try it more in depth. It's not a killer as of the moment since we're not using u32regex with ICU *yet*, but we plan to use it soon.
Then the only thing I can suggest is that you build regex from within your IDE using the same build options you use for ICU: Boost.Regex is "just a bunch of sources", so build everything in libs/regex/src/*.cpp into a static lib or dll - you will need to define BOOST_REGEX_DYN_LIB if you build as a dll to ensure the correct exports are made, but that should be the only "gotcha". John.
There seems to be a problem with missing example files in Boost.Test http://www.boost.org/libs/test/example/unit_test_example1.cpp http://www.boost.org/libs/test/example/unit_test_example2.cpp http://www.boost.org/libs/test/example/unit_test_example3.cpp http://www.boost.org/libs/test/example/unit_test_example4.cpp http://www.boost.org/libs/test/example/unit_test_example5.input http://www.boost.org/libs/test/example/unit_test_example5.cpp http://www.boost.org/libs/test/test/auto_unit_test_test.cpp http://www.boost.org/libs/test/test/auto_unit_test_test_mult1.cpp http://www.boost.org/libs/test/test/auto_unit_test_test_mult2.cpp -- Sébastien Fortier
participants (3)
-
John Maddock
-
Lawrence Spector
-
Sébastien Fortier