Mail Archives: cygwin/2003/12/31/07:24:58
From: Jani Tiainen <jani dot tiainen at keypro dot fi>
>
>
--------------------------------------------------------------------------------
> Hi,
>
> I'm sure that this has been answered several times, but I'll ask again
because couldn't find any solution by myself.
>
> I would like to build DLL (or any other sort of library) that refers to
external symbols in main application.
>
> So far I have been able to build non-working constructs. =)
>
> Let's say that I've two files:
>
> main.c:
>
> #include <stdio.h>
>
> extern void funcInMyLib(int);
>
>
> void funcInMain(int i)
> {
> printf("funcInMain(%ld)\n", i);
> }
>
>
> int main(int argc, char **argv)
> {
> funcInMyLib(1);
> return 0;
> }
>
> and second file (library)
>
>
> mylib.c:
> extern void funcInMain(int);
>
>
> void funcInMyLib(int i)
> {
> printf("Calling back...");
> funcInMain(i + 1);
> }
>
> --------
>
> Now how I can get this working, or is it possible at all?
>
> With .DEF files I can get things compiled and linked, but even program
crashes at startup, or end up requesting "main.exp.dll".
>
Make a .def file for the library, with IMPORTS section:
============================
;mylib.def
LIBRARY mylib.dll
EXPORTS
funcInMyLib
IMPORTS
main.exe.funcInMain
============================
... and one for the main app:
============================
;main.def
NAME main.exe
EXPORTS
funcInMain
IMPORTS
mylib.dll.funcInMyLib
============================
Build the dll.
gcc -shared -o mylib.dll mylib.def mylib.c
Build the exe
gcc -o main.exe main.def main.c
It may be useful to create a import lib for the
dll, especially if you are exporting stdcall symbols or plan to reuse the
dll with other app's.
eg:
gcc -shared -o mylib.dll -Wl,--out-implib,libmylib.a mylib.def mylib.c
gcc -o main.exe main.def main.c -L. -lmylib
Danny
http://personals.yahoo.com.au - Yahoo! Personals
New people, new possibilities. FREE for a limited time.
--
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/
- Raw text -