At first I want to apologize for my English. I want to rewrite my Java program to D. I have problem with shared library and dlopen() function.<br><br>calc_mean.d:<br><br>extern(C){<br>         double mean(double a, double b) {
<br>                  return (a+b) / 2;<br>         }<br>}<br><br>dmd -fPIC calc_mean.d -c<br>gcc -shared -Wl,-soname,libmean.so.1 -o libmean.so.1.0.1 calc_mean.o -m32<br><br><br>test.d:<br><br>import std.stdio;<br>import std.c.linux.linux
;<br><br>public void main(){<br>         void *handle;<br>         double (*reff)(double, double);<br><br>         handle = dlopen("./libmean.so.1.0.1", RTLD_NOW);<br><br>         char *errstr = dlerror();        <br><br>         if(errstr != null)
<br>                 printf ("A dynamic linking error occurred: (%s)\n", errstr);<br><br>         *cast(void **)(&reff) = dlsym(handle, "mean");<br>                 errstr = dlerror();<br><br>         if(errstr != null)
<br>                 printf ("A dynamic linking error occurred: (%s)\n", errstr);<br><br>         writefln((*reff)(1,12));<br>}<br><br><br><br>dmd test -L-ldl<br><br>./test :<br><br>./test<br>A dynamic linking error occurred: (./libmean.so.1.0.1: undefined symbol: _Dmodule_ref)
<br>A dynamic linking error occurred: (./test: undefined symbol: mean)<br>Segmentation fault<br><br>I am 17, so I am novice programmer. I don't know what I am doing wrong. Please help me.<br>