X-Spam-Check-By: sourceware.org Message-ID: <2e59e6970601172118j4bc19d2eq907f69f872ac89c5@mail.gmail.com> Date: Tue, 17 Jan 2006 23:18:18 -0600 From: * * To: cygwin AT cygwin DOT com Subject: Re: Using VC-compiled Mesa binaries under Cygwin In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Disposition: inline References: <2e59e6970601162109v2bae6228n96a04d79c9fe33cd AT mail DOT gmail DOT com> X-IsSubscribed: yes Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm Precedence: bulk List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by delorie.com id k0I5IRvr005532 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/