Хочу разобраться с подключением библиотек. Есть такой код
mylib.d
extern (C)
{
double mean(double a,double b)
{
return a + b;
}
}
main.d
import std.stdio;
import gtkc.Loader;
void main()
{
void *handle;
double (*reff)(double, double);
handle = dlopen("./mylib.so", 3);
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));
}
Делаю mydll.so, запускаю main - всё отлично работает, выводит результат. Но я хочу работать в моей библиотеке с GTK. И, хотя-бы, просто добавляя в mydll.d строку «import gtk.Window;», то-есть:
mylib.d
import gtk.Window;
extern (C)
{
double mean(double a,double b)
{
return a + b;
}
}
то, когда запускаю main - получаю:
A dynamic linking error occurred: (/usr/lib/mylib.o: undefined symbol: _D3gtk6Window12__ModuleInfoZ)
A dynamic linking error occurred: (./main: undefined symbol: mean)
Что я делаю не так?