Necesito vincular dinámicamente una biblioteca que he creado. No estoy exactamente seguro de cuál es el problema. Todo se compila correctamente, pero siempre me captura handle
como puntero NULL
:Libdl de uso apropiado y bibliotecas vinculadas dinámicamente
void *handle;
char *error;
handle = dlopen ("./hw11-lib-michaelSchilling.so", RTLD_LAZY);
//same error comes up with full path as well as './hw11...'
if(!handle){
error = dlerror();
printf("%s\n", error);
printf("Error loading library.\n");
exit(1);
}
no puedo conseguir pasado este error y no estoy seguro de lo que podría estar mal. Estoy bastante seguro de haber compilado todo correctamente. Estos son los pasos de compilación que utilicé:
gcc -rdynamic -c hw11-lib-michaelSchilling.c -o hw11-lib-michaelSchilling.so
gcc hw11-michaelSchilling-4.c -ldl -o hw11-michaelSchilling-4
Recibo un error que dice
única ET_DYN y ET_EXEC se pueden cargar.
Junto con '-rdynamic'? Acabo de probarlo con ambos y con '' -shared', pero obtuve el mismo error. –
@MichaelSchilling: no creo que '-rdynamic' tenga algo que ver con el problema, por lo que es mejor que lo guarde en caso de que lo necesite su código. – NPE
@MichaelSchilling: ¿Has eliminado el '-c'? – NPE