Using dlopen/dlsym

Andrei Alexandrescu via Digitalmars-d digitalmars-d at puremagic.com
Mon Dec 26 16:05:39 PST 2016


Consider this code:

===========
import core.sys.posix.dlfcn;
extern(C) void fun() {}
void main()
{
     fun();
     void *hndl = dlopen(null, RTLD_LAZY);
     if (!hndl) assert(0);
     auto p = dlsym(hndl, "fun".ptr);
     if (!p)
     {
         import core.stdc.stdio;
         printf("%s\n", dlerror());
     }
}
===========

It works (i.e. outputs nothing) on http://dpaste.dzfl.pl and on 
Vladimir's machine.

On my Mint and Ubuntu machines it outputs:

./test: undefined symbol: fun

I'm building with no flags using dmd. What could be the problem here?


Thanks,

Adnrei


More information about the Digitalmars-d mailing list