dlopen(0, RTLD_LAZY) doesn't work?

Kent Watsen kent@watsen.net
Wed Feb 6 18:10:00 GMT 2002


Hi,

I've read the mailing list archives and searched google trying
to figure out how to get the following program to work.  All
you have to do is save it to a file (foo.c), compile (gcc foo.c),
and run - I always get "dlsym() failed."

Note, I have tried many variations of extern and _declspec
as well as looking for "_foo" in addition to "foo" ("nm a.exe |
grep foo" returned "0040104c T _foo"...

Here is the code - help would be greatly appreciated - thanks!

#include <stdio.h>
#include <dlfcn.h>
#include <windows.h>

extern __declspec(dllexport) void foo(void)
{
    printf("hello\n");
}

int main(int argc, char *argv[])
{
    void* dl    = NULL;
    void* func = NULL;

    dl = dlopen(0 , RTLD_LAZY);
    if (dl == NULL) {
        printf("dlopen() failed\n");
        exit(0);
    }

    func = dlsym(dl, "foo");
    if (func == NULL) {
        printf("dlsym() failed\n");
        exit(0);
    }

    printf("do something meaningful\n");

    dlclose(dl);
    return 0;
}




--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/



More information about the Cygwin mailing list