Hi!!

I'm new to the list, but I searched archives looking for a solution and
found nothing.

I have TWO questions, but it's the same problem.

First is -rdynamic swich for gcc. it's used to export symbols for shared
objects and the second is about linking shared objects (.dll) with symbols
declared as external.

Let's see following code:

---main.c---
#include <dlfcn.h>
#include <stdio.h>

int c;

main () {

        int (*foo)();
        void *handler = dlopen ("./foo.so", RTLD_LAZY|RTLD_GLOBAL);
        if (!handler) {
                fputs (dlerror(), stderr);
                printf("\n");
                exit(1);
        }
        foo = dlsym(handler,"foo");

        (*foo)();
        dlclose(handler);
}
---main.c---

and following shared object source:

---foo.c---
//extern int c;

foo () {
        printf("Fooo!\n");
//        printf("c=%i\n",c);
}
---foo.c---

If I compile it under Unix or windows (under Win using attached shell
script -- refering to the documentation) everything is OK. But WHAT I have
to do to get it working with foo looking like this:

---foo.c---
extern int c;

foo () {
        printf("Fooo!\n");
        printf("c=%i\n",c);
}
---foo.c---     


Under Unix I used to compile main:
gcc main.c -o main -ldl -rdynamic
(to export symbols to dynamically dlopened shared objects), and foo:
gcc -shared foo.c -o foo.so

First of all -rdynamic does not work under cygwin and moreover ld fails
linking shared objects with symbols declared as external.

Any suggestions???

Regards,

--
Mariusz Wołoszyn
Internet Security Specialist, Internet Partners

ll.sh

--
Want to unsubscribe from this list?
Check out: http://cygwin.com/ml/#unsubscribe-simple

Reply via email to