Mail Archives: cygwin/2000/04/05/11:05:49
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 <jdreese AT bucknell DOT edu>
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
- Raw text -