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
I found that this problem was caused by boost build system calling VCVARS32.bat automagically, b/c it didn't think my environment was setup correctly. I can see why things are setup this way to prevent tons of configuration questions, but the build system really should inform the user that it is setting things automagically. Silently changing environment variables, etc can be a huge (couple of days worth) headache in custom configurations. Aaron
-----Original Message----- From: boost-users-bounces@lists.boost.org [mailto:boost-users-bounces@lists.boost.org] On Behalf Of Aaron Nauman Sent: Monday, February 14, 2005 8:58 AM To: boost-users@lists.boost.org Subject: [Boost-users] Regex link issues
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@boo st@@V?$all ocator_adapter@DVsimple_alloc@detail@boost@@@detail @2@@boost@@QAIIABV?$basic_string@DV?$char_traits@D@_STL@@V?$al locator@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
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/bo> ost-users
participants (1)
-
Aaron Nauman