Проблемный кусок кода такой:
typedef void (*ksfree_t)(void* ptr);
typedef void* (*ksmalloc_t)(size_t size, char* type);
typedef void (*neuro_unref_t)(neuro_t* neuro);
ksfree_t ksfree;
ksmalloc_t ksmalloc;
neuro_unref_t neuro_unref;
void init()
{
void* handle = dlopen(NULL, RTLD_NOW);
ksfree = dlsym(handle, "ksfree");
ksmalloc = dlsym(handle, "ksmalloc");
neuro_unref = dlsym(handle, "neuro_unref");
}
Присваивание значения глобальной переменной вызывает ошибку, если определить все как локальные переменнуые то присваивание ошиок не вызывает, но в остальных случаях глобальные переменные принимают значения безSegFault, да и вообще должны работать.
Что я делаю не так? Нельзя создавать глобальные указатели на функции?