This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: need -mrtd to create Excel DLL?


Siegfried:

Hi. I did not use any __declspec keywords, etc. -- just vanilla C
code which runs as well under gcc or g++ under Cygwin, FreeBSD, or
SPARC/Solaris, etc.  Creating DLLs is another matter -- I've just tested
this using Cygwin/gcc under XP Pro.  As I said, I cannot get this to
work under Cygwin/g++.

I tested the application with Excel using the dlltest.xls file in
http://www.xraylith.wisc.edu/~khan/software/gnu-win32/
but without the other modifications in his cdll.[ch] files.
To use his dlltest.xls, I named my DLL the same, and created
double dll_double_square (double d)
as one of my functions which called a series of other functions in other
files before returning.

I used the following lines in my Makefile.  No other special code changes
were required in any of my .c or .h files:

CC = gcc
MY_OBJS = \
[.o files]

DLL_OPTION=-mrtd # needed for Excel DLL
CYGWIN_OPTION=-mno-cygwin $(DLL_OPTION)
CDEBUGFLAGS = -g -O2 -Wall
CFLAGS = $(CDEBUGFLAGS) $(CYGWIN_OPTION)

dllmodule = cdll
obj_libs = $(MY_OBJS)
dependency_libs = -lm

# no need for run.exe when creating DLLs -- without a main()
compile: $(MY_OBJS)
	@$(CC) -o run.exe $(MY_OBJS) ${dependency_libs}

cdll:
	make -i compile
	$(CC) $(CFLAGS) -shared -o ${dllmodule}.dll \
	-Wl,--out-implib=${dllmodule}.lib \
	-Wl,--compat-implib \
	-Wl,--add-stdcall-alias \
	-Wl,--enable-stdcall-fixup \
	-Wl,--enable-auto-import \
	-Wl,--enable-auto-image-base \
	-Wl,--whole-archive ${obj_libs} \
	-Wl,--export-all-symbols \
	-Wl,--output-def=${dllmodule}.def \
	-Wl,--no-whole-archive ${dependency_libs}

Lester

: Lester,
:  It works! Thank you. Assuming these will be archived, maybe this can help
: someone else.
: 
: Since I'm wondering if Excel was caching something, I decided to use C# and
: it works!
: 
:  Thanks,
:     Siegfried
: 
: Here is the example of calling cygwin C from C#:

:: I was able to create a dll from many C files, representing fairly complex
:: calculations, using the following in my Makefile, without having to add
:: any keywords like "__declspec", using info from the Cygwin docs.
:: ...
:: Lester


--
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/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]