I have upgraded by stlport libs to 4.6.2 (from 4.5) and boost libs to
1_32_0 (from 1_26_0). I am getting odd linking errors in the regex
library.
I am on vc6 sp5 and linking dynamically.
If I have something like this in the code, it links fine
boost::regex test("foo");
But if I use an std::string, I get link errors. For example, this code
std::string testStr("bar");
boost::regex test(testStr);
Produces link errors
vc.obj : error LNK2001: unresolved external symbol
"__declspec(dllimport) public: unsigned int __fastcall
boost::reg_expression
::se t_expression(class _STL::basic_string
const &,unsigned int)" (__imp_?set_expression@?$reg_expression@DV?$regex_traits@D@boost@@V?$all ocator_adapter@DVsimple_alloc@detail@boost@@@detail @2@@boost@@QAIIABV?$basic_string@DV?$char_traits@D@_STL@@V?$allocator@D@ 2@@_STL@@I@Z)
I dumped the exports for the library and there is mismatch in _STL and std namespaces. This is what I see in the new library 323 142 00026E00 ?set_expression@?$reg_expression@DV?$regex_traits@D@boost@@V?$allocator_ adapter@DVsimple_alloc@detail@boost@@@detail@2@@boost@@QAIIABV?$basic_st ring@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@I@Z The only difference seems to be _STL versus std. I know the std renaming is an stlport feature, but I am not sure where to go from here. If I look back into my old regex library, although the interfaces have changed, I see references to _STL, not std. Here is old library export (notice _STL) 61 3C 000010B0 ?Grep@RegEx@boost@@QAEIAAV?$vector@IV?$allocator@I@_STL@@@_STL@@ABV?$bas ic_string@DV?$char_traits@D@_STL@@V?$allocator@D@2@@4@I@Z Versus the new library export (notice std) 100 63 000010E0 ?Grep@RegEx@boost@@QAEIAAV?$vector@IV?$allocator@I@std@@@std@@ABV?$basic _string@DU?$char_traits@D@std@@V?$allocator@D@2@@4@K@Z Can someone please help me figure out how to get these consistent. Thanks! Aaron