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 [EMAIL PROTECTED] > 00000000 T [EMAIL PROTECTED] 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/