android_mt6572_jiabo/development/ndk/tests/dlclose-destruction/jni/main.c
2025-09-05 16:56:03 +08:00

48 lines
1 KiB
C

#include <stdio.h>
#include <dlfcn.h>
typedef void (*test_func_t)(int *px);
int x;
int main(void)
{
void* lib = dlopen("libtest1.so", RTLD_NOW);
test_func_t test_func;
if (lib == NULL) {
fprintf(stderr, "Can't load library: %s\n", dlerror());
return 1;
}
printf("Loaded !\n");
test_func = dlsym(lib, "test1_set");
if (test_func == NULL) {
fprintf(stderr, "Can't find test function\n");
return 2;
}
x = 0;
test_func(&x);
if (x == 1) {
printf("Test function called !\n");
} else {
fprintf(stderr, "Test function failed to set variable !\n");
return 3;
}
dlclose(lib);
printf("Unloaded !\n");
if (x == 2) {
printf("Test destructor called !\n");
} else if (x == 1) {
fprintf(stderr, "Test destructor was *not* called !\n");
return 4;
} else {
fprintf(stderr, "Test destructor called but returned invalid value (%d)\n", x);
return 5;
}
return 0;
}