Boost logo

Boost Users :

From: Mike Marchywka (marchywka_at_[hidden])
Date: 2007-10-02 15:35:44


Same problem during link and runtime with only dll. The static choice should
avoid
dll problems so maybe I'll give that another look. Thanks again.

$ make boostd_rules_annotater
g++ -Wall -ggdb -mthreads -msse -O3 -I . \
-o rules_annotater boost_rules_annotater.o \
-lpthread -L./boost -lmyboost -L./boost/lib -L.
-lcygboost_regex-gcc-mt-1_33_1
-L./greta -lmygreta -ljpeg -lm -Lgreta bio_lo_level_string.o
Info: resolving vtable for boost::regex_errorby linking to
__imp___ZTVN5boost11r
egex_errorE (auto-import)

Administrator_at_TESTBED01 /cygdrive/c/mydocs/scripts/cc/affx
$ /cygdrive/e/new/exp/brew/msbin/DUMPBIN /EXPORTS
cygboost_regex-gcc-mt-1_33_1.
dll | grep regex_error
         33 20 0001B2E0
_ZN5boost11regex_errorC1ENS_15regex_constants10error_t
ypeE
         34 21 0001AE60
_ZN5boost11regex_errorC1ERKSsNS_15regex_constants10err
or_typeEi
         35 22 0001B450
_ZN5boost11regex_errorC2ENS_15regex_constants10error_t
ypeE
         36 23 0001AE20
_ZN5boost11regex_errorC2ERKSsNS_15regex_constants10err
or_typeEi
         37 24 0001AEE0 _ZN5boost11regex_errorD0Ev
         38 25 0001AEC0 _ZN5boost11regex_errorD1Ev
         39 26 0001AEA0 _ZN5boost11regex_errorD2Ev
        444 1BB 0001B1F0 _ZNK5boost11regex_error5raiseEv
        545 220 00093950 _ZTIN5boost11regex_errorE
        558 22D 00093DA8 _ZTSN5boost11regex_errorE
        571 23A 00094868 _ZTVN5boost11regex_errorE
$ cygcheck rules_annotater.exe
Found: c:\mydocs\scripts\cc\affx\rules_annotater.exe
c:/mydocs/scripts/cc/affx/rules_annotater.exe
  C:\WINNT\cygwin1.dll
    C:\WINNT\system32\ADVAPI32.DLL
      C:\WINNT\system32\KERNEL32.dll
        C:\WINNT\system32\ntdll.dll
      C:\WINNT\system32\RPCRT4.dll
  c:\mydocs\scripts\cc\affx\cygboost_regex-gcc-mt-1_33_1.dll

http://www.cygwin.com/ml/cygwin/2004-08/msg00753.html

--enable-auto-import
     Do sophisticated linking of _symbol to __imp__symbol for DATA
     imports from DLLs, and create the necessary thunking symbols when
     building the import libraries with those DATA exports. Note: Use of
     the 'auto-import' extension will cause the text section of the
     image file to be made writable. This does not conform to the
     PE-COFF format specification published by Microsoft.

     Using 'auto-import' generally will 'just work' -- but sometimes you
     may see this message:

     "variable '<var>' can't be auto-imported. Please read the
     documentation for ld's --enable-auto-import for details."

     This message occurs when some (sub)expression accesses an address
     ultimately given by the sum of two constants (Win32 import tables
     only allow one). Instances where this may occur include accesses
     to member fields of struct variables imported from a DLL, as well
     as using a constant index into an array variable imported from a
     DLL. Any multiword variable (arrays, structs, long long, etc) may
     trigger this error condition. However, regardless of the exact
     data type of the offending exported variable, ld will always detect
     it, issue the warning, and exit.

     There are several ways to address this difficulty, regardless of
     the data type of the exported variable:

>From: "John Maddock" <john_at_[hidden]>
>Reply-To: boost-users_at_[hidden]
>To: <boost-users_at_[hidden]>
>Subject: Re: [Boost-users] question on boost::regex expression(query);
>Date: Tue, 2 Oct 2007 18:45:30 +0100
>
>Mike Marchywka wrote:
> >> Well, I wanted a static build but couldn't get that to work and then
> >> I realized
> >> it needed a dll only when I tried to run in different location.
> >> These are the lib's I have.
> >>
> >>
> >> $ ls ./boost/lib | grep regex
> >> libboost_regex-gcc-mt-1_33_1.a
> >> libboost_regex-gcc-mt-s-1_33_1.a
> >> libboost_regex-gcc-mt-s.a
> >> libboost_regex-gcc-mt.a
> >>
> >> Linking against the static produced undefines such as
> >>
> >>
>./boost/lib/libboost_regex-gcc-mt-s-1_33_1.a(cpp_regex_traits.o):cpp_regex_trait
> >> s.cpp:(.text+0x4cf): undefined reference to
> >> `__gnu_cxx::__exchange_and_add(int v
> >> olatile*, int)'
>
>Looks like you need -lpthread or maybe -rt (I can't remember which symbols
>are in which cygwin dll).
>
> >> so it looked like the non-static was working.
>
>It probably should as long as you're only linking to *one* regex library
>:-)
>
>John.
>
>_______________________________________________
>Boost-users mailing list
>Boost-users_at_[hidden]
>http://lists.boost.org/mailman/listinfo.cgi/boost-users

_________________________________________________________________
A place for moms to take a break!
http://www.reallivemoms.com?ocid=TXT_TAGHM&loc=us


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net