Re: [ROOT] Libraries (What about Windows ?)

From: Valery Fine (fine@bnl.gov)
Date: Sat Apr 15 2000 - 07:27:53 MEST


> On Fri, 14 Apr 2000 18:21:41 -0400 "Valeri Fine (Faine)" <fine@bnl.gov> wrote:
> > I am just curious did anybody see such sort of problem for Windows ?
> 
> AFAIK, no. But that doesn't mean it's not there. 

  Yes, that why was asking.

> On Windoze, you still have no way of knowing what is in a Dynamical
> Loadable Library (DLL, or on Unix's: Shared Library), just by looking
> at the name. You _must_ use _some_ utility to get that information. 

 Correct

> 
> Now, I've no idea what's avaliable in Micros**t Visual C++, but as far
> as I remember there is some shell utility that list the symbols in the
> library. 

   It is called "dumpbin"

> You should think that the "quickviewer" should do the job,
> after all Windoze is suppose to be "user friendly" isn't it, but no
> surprise, it doesn't. And wether the supposed utility of Micros**t
> Visual C++ know how to demangle I do not know. In any case, ASAIK, the
> utility is a shell application i.e., you have to open a "DOS" prompt
> and play around in that one - which is enough for many Windoze users
> to go haywire. 

 User may be but not the developer.

> 
> CygWin, being a GNU port to Windoze, _has_ the previously mentioned
> utility "nm", just like on Linux. However, you can not apply this
> utility to a DLL created by Micros**t Visual C++ for some, to me
> unknown, reason. And ofcourse the CygWin "nm" knows how to demangle
> C++ symbols. 

> 
> You may think having the export files around would  help you, but they
> really don't. You still have to locate the symbol you're looking
> for. 

Very likely you are not familiar with ROOT development kit. It does contain 
the utility you are speaking about. That is supplied with the source and can be 
enhanced / improved by demand.

> Well first instinct: Use the "Find Files and Folders" entry in
> the start menu of Windoze and search for a "*.exp" with an occurence
> of the sought symbol - however, it will probably not work. The reason:
> The symbols listed in the export libraries are mangled! Hence you
> really need to know the mangling of your compiler (and who does), to
> use this method efficiently. 
> 
> So we're back to square one: 
> 
> * You have to use some utility to look throughthe symbols in the
>   libraries.    
>   - Micros**t Visual C++ may have such a utility. 
>   - CygWin has "nm" which also does demangling. 
> 
> * Yoy probably want to do a query on the output from the utility, to
>   select one and only one library. 
>   - It's not apparent how you an do that using standard Windoze
>     utilities. "Find ..." doesn't work. You probably have to manually
>     browse - using a "DOS" prompt application - through all possible
>     candidates your self.    
>   - CygWin supplies "grep", so you can set up a nice pipeline (as you
>     would in Unix's) to select the library needed: 

   Hmm, what about Perl script ?

>     
>        cygwin prompt% nm -C Root_*.lib | grep "TParticle" | \ 
>       grep -v "        U " | less    
> 
> In short: You're not better of using Windoze, compared to Unix's. In
> fact, using Micros**t Visual C++, you're probably doing worse. So if
> you insist on using Windoze (remember the anti-trust conviction?), you
> should use CygWin to get the optimum development environment. This, of
> course is old news. Maybe I'd be a good thing for the ROOT team also
> to dsitribute binary releases for the Windoze/CygWin combination as
> well as the Windoze/Micros**t Visual C++. Maybe you could do that
> Valery? 
 Alas I can not  and see no reason to do that.
 If I could I would  complete the existen  WIN32 implementation.
 I see no reason for CygWin. If one needs the UNIX version of ROOT 
 it is much better to install VMWARE and the regular "guest" Linux.
 Of course it is not as cheap as CygWin but it worth to try. 

> 
> Anyway, that's my two pennies worth. Back to you Valery. 

  Thank you.
                                   Valery



This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:23 MET