Mail Archives: cygwin/2006/01/18/00:18:31
On 1/17/06, Eric Lilja wrote:
> * * wrote:
> > Are the import libraries using the cygwin filename conventions?
> >
> Well, no. Building Mesa with glut creates the following files (which I have
> copied to the directory of the simple test program I trying to build with
> compiler supplied with Cygwin using the Makefile in first post):
> $ ls *.DLL *.lib
> GLU32.DLL* GLU32.lib* GLUT32.DLL* GLUT32.lib* OPENGL32.DLL*
> OPENGL32.lib*
> > example,
> >
> > -lm links against
> > libm.a
> >
> > -lpcre links against
> > libpcre.a
> > libpcre.dll.a
> > libpcre.la
> >
> > GCC just isn't going to find a file named glut32.lib using the
> > -lglut32 switch like microsoft link.exe does. It might work if you
> > list it like all the object files.
>
> I tried renaming GLUT32.DLL to libglut32.dll.a, but the linker still cannot
But libglut32.dll.a should be the import library which Visual C++
named GLUT32.LIB
> find the definitions of any glut functions. I tried adding GLUT32.lib with
> the objects in the linking stage, but still no go.
This I would have hoped would work. The GLUT32.DLL is certainly
usable from cygwin, as all system DLLs are (although non-C DLLs might
not be in some cases).
> However, doing a nm GLUT32.lib | grep glutPostRedisplay (the first undefined
> reference), shows:
> $ nm GLUT32.lib | grep _glutPostRedisplay
> 00000000 I __imp__glutPostRedisplay AT 0
> 00000000 T _glutPostRedisplay AT 0
This is definitely the MSVC name mangling convention.... but I think
that gcc doesn't append the number of bytes on the end. What calling
convention did you compile with? I think MSVC adds the argument size
to stdcall but not cdecl, or else the other way around.
Actually, what was the error in the previous step? Undefined symbols
I presume? Please give a couple examples so I can see the mangled
names. You may want to try recompiling the DLL with a different
calling convention specified in your MSVC project. Functions in
system DLLs are stdcall. I note that the /usr/include/w32api/*.h have
all declarations include __declspec(dllimport) __stdcall just like
MSVC... so your header files may need this too.
>
> Any ideas? And one more thing: Please don't quote raw email addresses when
> replying to this list. Thanks.
Oops. Very sorry.
Other idea is to extract a gcc-format import library using dlltool...
this looks helpful:
http://www.emmestech.com/software/cygwin/pexports-0.43/moron1.html
>
> >
> > On 1/16/06, Eric Lilja wrote:
> >> I just compiled the latest version of Mesa (6.4.1) using Microsoft
> >> Visual Studio, because I couldn't compile it with MinGW or Cygwin.
> >> After editing a macro, I was successful in compiling Mesa + glut in
> >> Visual Studio. Now, can I use the binaries (libs and DLLs) with
> >> Cygwin? I can't seem to get my test program to link...I put the
> >> mesa-binaries in the application path and I am using the following
> >> Makefile:
> >> CC = gcc
> >> CFLAGS = -Wall -W -ansi -pedantic -g -O0 -c -o
> >> LDFLAGS = -L. -lglut32 -lglu32 -lopengl32 -o $(EXEC)
> >> EXEC = proj.exe
> >> OBJECTS = simple1_9.o
> >>
> >> all: $(OBJECTS)
> >> $(CC) $^ $(LDFLAGS)
> >>
> >> %.o: %.c
> >> $(CC) $(CFLAGS) $@ $<
> >>
> >> clean:
> >> rm -f $(OBJECTS) $(EXEC) *~ *.stackdump
> >>
> >> But I'm getting link errors for any glut-functions....any ideas?
> >>
> >>
> >>
> >>
> >> --
> >> Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
> >> Problem reports: http://cygwin.com/problems.html
> >> Documentation: http://cygwin.com/docs.html
> >> FAQ: http://cygwin.com/faq/
>
>
>
>
> --
> Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
> Problem reports: http://cygwin.com/problems.html
> Documentation: http://cygwin.com/docs.html
> FAQ: http://cygwin.com/faq/
>
>
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
- Raw text -