Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT sourceware DOT cygnus DOT com Delivered-To: mailing list cygwin AT sourceware DOT cygnus DOT com Date: Wed, 5 Apr 2000 11:04:35 -0400 (EDT) From: Jeremy Dreese X-Sender: jdreese AT castor To: cygwin AT sourceware DOT cygnus DOT com Subject: Re: dll and import library Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Well, thanks to someone else on the list, it was pointed out to me that I didn't include the actual error messages the linker was giving me. However, in the process of preparing to send the errors to the list, I may have found the solution to my problem. Here are the errors: prmtrc.o(.text+0xcc):prmtrc.f: undefined reference to `engopen_' prmtrc.o(.text+0x25c):prmtrc.f: undefined reference to `engclose_' plot.o(.text+0x2148):plot.f: undefined reference to `engevalstring_' plot.o(.text+0x2206):plot.f: undefined reference to `engevalstring_' (prmtrc.o and plot.o are two of my object files) I had tried changing my libeng.def file to something like: ------------- EXPORTS engOpen=engopen_ engClose=engclose_ engEvalString=engevalstring_ -------------- but that didn't seem to help. But I just tried changing it to: ------------- EXPORTS engopen_ engclose_ engevalstring_ -------------- which fixed my linking problem; this seems a little odd to me since the function names are "engOpen, engClose, and engEvalString" and not "engopen_, engclose_, and engevalstring_", but I am a little new to this. Of course now I get a runtime error: "The program_name is linked to the missing export LIBENG.DLL:engclose_" I'm guessing that just means the program can't find the libeng.dll file, so I'll plug away at this problem myself. Thanks, Jeremy ---------- Forwarded message ---------- Date: Wed, 5 Apr 2000 10:17:05 -0400 (EDT) From: Jeremy Dreese To: cygwin AT sourceware DOT cygnus DOT com Subject: dll and import library I am trying to get a fortran program, which currently runs under Solaris, to compile, link, and run on Windows (98 to be exact). The code compiles fine using g77. However, the linking has been a problem because it uses some Matlab libraries. Matlab ships the libraries as stripped DLL's for windows; since they're stripped I can't use "nm" to get the symbols to export, but I can use "objdump -p" which worked fine. I've tried to use dlltool to create an import library (.a file); the creation of the library seems to work fine, but when I try to link the various objects, I still get unresolved references (which should be resolved via the import library). Here's what I'm doing: libeng.def file: ----------------- EXPORTS FENGCLOSE FENGEVALSTRING FENGGETARRAY FENGGETFULL FENGGETMATRIX FENGOPEN FENGOUTPUTBUFFER FENGPUTARRAY FENGPUTFULL FENGPUTMATRIX engClose engEvalString engGetArray engGetFull engOpen engOpenSingleUse engOpenV4 engOutputBuffer engPutArray engPutFull engSetEvalCallback engSetEvalTimeout engWinInit ------------------ Now I run: dlltool --input-def libeng.def --dllname libeng.dll --output-lib libeng.a which creates the "libeng.a". Now I try to link everything: ld -o program_name $(OBJECTS) -leng $(OTHER_LIBRARIES) I'm pretty sure the linker is seeing the libeng.a because if I change "-leng" to something incorrect like "-len" it reports that it can't open "-len". Any help would be GREATLY appreciated. ------------ Jeremy Dreese -- Want to unsubscribe from this list? Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com -- Want to unsubscribe from this list? Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com