Files
dlopen/tests/testDll.c
2025-12-21 18:51:34 +05:00

67 lines
933 B
C

#include <stdio.h>
#include <stdlib.h>
#include <dlfcn.h>
#define LOAD_DLL(path) \
void *dll = dlopen(path, RTLD_LAZY); \
if (dll == NULL) \
epic_fail(); \
else \
printf("load OK!\n");
static void epic_fail()
{
printf("epic fail\n");
exit(1);
}
static void openDll()
{
LOAD_DLL("dll.dll");
void (*test)() = dlsym(dll, "test");
if (test == NULL)
epic_fail();
test();
dlclose(dll);
}
static void openDep()
{
LOAD_DLL("dllDep.dll");
void (*test2)() = dlsym(dll, "test2");
if (test2 == NULL)
epic_fail();
test2();
dlclose(dll);
}
static void open2Dep()
{
openDep();
openDep();
}
static void (*testsList[])() = {
openDll,
openDep,
open2Dep};
int main()
{
for (int i = 0; i < sizeof(testsList) / sizeof(testsList[0]); i++)
{
fprintf(stderr, "test %d\n", i);
testsList[i]();
}
printf("passed!");
}