
John Maddock wrote:
I have a suspicion that what's happening is this:
The match_results<const char*> template instance is explicitly instantiated in the library, and declared as "extern" in user code (so it uses the instance in the library). I suspect that your code is being built with inline expansions off, but the release version of the lib doesn't have these inline members instantiated in it, so either:
My code is not built with inlining disabled. For compiling I use '-mp -pc64 -DBOOST_ENABLE_ASSERT_HANDLER' with the addition of '-O2 -xN -vec_report0 -DBOOST_DISABLE_ASSERTS' for optimized and '-g' for debug versions. For linking I use '-Wl,--export-dynamic'.
1) Try linking to the debug build of the lib when building with inline expansion turned off. 2) uncomment the line // #define BOOST_REGEX_NO_EXTERNAL_TEMPLATES in boost/regex/user.hpp and rebuild everything, the regex lib will now be slightly smaller, and your exe will be a lot bigger, but it should cure the problem.
I will try this.
3) Upgrade to Intel 8.1, I realise this might not be possible though.
We tried 8.1, but it produces code that is slower than g++ 3.4.4 for our application, so we are retiring the Intel version. It also has a bug that Intel only fixed in 9.0. -- Dick Hadsell 914-259-6320 Fax: 914-259-6499 Reply-to: hadsell@blueskystudios.com Blue Sky Studios http://www.blueskystudios.com 44 South Broadway, White Plains, NY 10601