Возникла проблема при компиляции программы, связанная с проверкой типов данных.Код:
#include<dlfcn.h>
#include<stdio.h>
typedef void (*simple_demo_function)(void);
int main(void)
{
const char *error;
void *module;
simple_demo_function demo_function;
module = dlopen("libhello.so", RTLD_LAZY);
if (!module)
{
fprintf(stderr, "Couldn't open libhello.so: %s\n", error);
}
dlerror();
demo_function = dlsym(module, "hello");
if ((error = dlerror()))
{
fprintf(stderr, "Couldn't find hello: %s\n", error);
}
(*demo_function)();
dlclose(module);
return 0;
}
Использую компилятор g++(при gcc такой ошибки не возникает, но мне необходимо использовать g++ или c++)
g++ -fPIC -g -c libhello.c
g++ -g -shared -ldl -Wl,-soname,libhello.so.0 -o libhello.so.0.0 libhello.c -lc
ln -sf libhello.so.0.0 libhello.so
g++ -g -c demo.c -o demo.o
g++ -g -o demo demo.o -L. -lhello
Выдает:
libhello.c:5:3: warning: no newline at end of file
libhello.c:5:3: warning: no newline at end of file
demo.c: In function `int main()':
demo.c:19: error: invalid conversion from `void*' to `void (*)()'
Долго парился, искал по всему инету - ничего не нашел.
Помогите, плиз, если не составит труда.
Может какой-нибудь флажок поставить нужно, чтобы отключить жесткую проверку типов или еще чего-нибудь :)
Заранее респект!