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>        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;double mean(double a, double b) {  
<br>&nbsp;&nbsp;                &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return (a+b) / 2;<br>        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br><br>dmd -fPIC calc_mean.d -c<br>gcc -shared -Wl,-soname,libmean.so.1 -o libmean.so.1.0.1&nbsp;&nbsp;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>        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void *handle;<br>        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;double (*reff)(double, double);<br><br>        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;handle = dlopen(&quot;./libmean.so.1.0.1&quot;, RTLD_NOW);<br><br>        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char *errstr = dlerror();        <br><br>        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(errstr != null)  
<br>                &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf (&quot;A dynamic linking error occurred: (%s)\n&quot;, errstr);<br><br>        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*cast(void **)(&amp;reff) = dlsym(handle, &quot;mean&quot;);<br>                &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;errstr = dlerror();<br><br>        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(errstr != null)  
<br>                &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf (&quot;A dynamic linking error occurred: (%s)\n&quot;, errstr);<br><br>        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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&#39;t know what I am doing wrong. Please help me.<br>