import libraries for 3rd-party DLLs

Anders Norlander
Wed Mar 31 19:45:00 GMT 1999

Richard Hellicar (EML) wrote:
> Hello,
> I'm trying to create an "import library" to allow me to use gcc with a
> third-party DLL.
> I tried the .lib files supplied with the DLL, but neither worked (one was
> for MS, which
> did compile, but complained about entry points when executed, the other for
> Borland).
> The Cygwin User's Guide (Delorie, Humblet, Noer) suggests a method in
> Chapter 4
> ("Linking against DLLs").  However, if I run nm on *any* dll, not just the
> one I'm trying
> to use, it tells me "No symbols in xyz.dll"

The method suggested in the user's guide doesn't work if the
dll is stripped. (Hint: shouldn't this be mentioned in the ug?).
> 1. Should I expect either the MS or Borland .lib files to be compatible ?

Generally, no, and certainly not Borland lib files.
There are, however, patches to make gnu tools more MS compatible.

> 2. Is there a way of converting incompatible lib files ?

Depends on which format it is and if it is an import library
or a regular object library. At least in MSVC 6, I think MS
changed the format for import libraries and possibly other .lib
files as well. This stops the `nm ...' method of creating def
files from MS import libraries from working.

> 3. Why doesn't nm find symbols in *any* DLL (try: for i in
> /winnt/system32/*.DLL; do nm $i; done)
See above

> 4. exactly what *is* supposed to be in a .def file; should the @4,@8  stuff
> be in
>   there or not ?  Semi-colons ?

The @x are the total size of the parameters passed to a function using
the stdcall (standard win32) calling convention. Those functions are 
decorated that way by the compiler.
Semi-colons are comments.

Want to unsubscribe from this list?
Send a message to

More information about the Cygwin mailing list