LINUX.ORG.RU

D + GTK, динамические библиотеки


0

1

Хочу разобраться с подключением библиотек. Есть такой код

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)

Что я делаю не так?



Последнее исправление: subsan (всего исправлений: 1)

извиняюсь за тупой вопрос...

собирал библиотеку без -lgtkd

вот и поговорил сам с собой:)

subsan
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.