problem with shared library and dlopen() function
Michał Cieślak
admin.michalc at gmail.com
Wed Aug 22 15:53:04 PDT 2007
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.
calc_mean.d:
extern(C){
double mean(double a, double b) {
return (a+b) / 2;
}
}
dmd -fPIC calc_mean.d -c
gcc -shared -Wl,-soname,libmean.so.1 -o libmean.so.1.0.1 calc_mean.o -m32
test.d:
import std.stdio;
import std.c.linux.linux ;
public void main(){
void *handle;
double (*reff)(double, double);
handle = dlopen("./libmean.so.1.0.1", RTLD_NOW);
char *errstr = dlerror();
if(errstr != null)
printf ("A dynamic linking error occurred: (%s)\n", errstr);
*cast(void **)(&reff) = dlsym(handle, "mean");
errstr = dlerror();
if(errstr != null)
printf ("A dynamic linking error occurred: (%s)\n", errstr);
writefln((*reff)(1,12));
}
dmd test -L-ldl
./test :
./test
A dynamic linking error occurred: (./libmean.so.1.0.1: undefined symbol:
_Dmodule_ref)
A dynamic linking error occurred: (./test: undefined symbol: mean)
Segmentation fault
I am 17, so I am novice programmer. I don't know what I am doing wrong.
Please help me.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.puremagic.com/pipermail/digitalmars-d-learn/attachments/20070823/81aaa46c/attachment.htm
More information about the Digitalmars-d-learn
mailing list