This commit is contained in:
interfiberschool 2023-03-17 11:45:37 +00:00
parent 92bc02b3a5
commit 9798f880f9
5 changed files with 25 additions and 6 deletions

View file

@ -1,5 +1,5 @@
#include <stdio.h>
void test(){
printf("testing 123\n");
printf("testing 123(unix)\n");
}

View file

@ -1,6 +1,12 @@
#include "../../src/dlopen.h"
typedef void (*func_handle)();
int main()
{
struct hotwire_dll_t dll = hw_dlopen("./bin/exampleUnixLib.dll", RTLD_NOW);
func_handle func = (func_handle)hw_dlsym(dll, "test");
func();
}

View file

@ -1,6 +1,12 @@
#include "../../src/dlopen.h"
typedef void (*func_handle)();
int main()
{
struct hotwire_dll_t dll = hw_dlopen("./bin/exampleWinLib.dll", 0);
func_handle func = (func_handle)hw_dlsym(dll, "test");
func();
}

View file

@ -29,4 +29,14 @@ struct hotwire_dll_t hw_dlopen(const char *file, int flags) {
#endif
return dll;
}
void* hw_dlsym(struct hotwire_dll_t dll, const char* symbol){
#if defined(_WIN32)
return GetProcAddress(dll.dll_handle, symbol);
#endif
#if defined(__linux) || defined(__APPLE__)
return dlsym(dll.dll_handle, symbol);
#endif
}

View file

@ -2,17 +2,14 @@
#include <stdio.h>
#if defined(__APPLE__)
#define HW_MODE 0
#include <dlfcn.h>
#endif
#if defined(__linux__)
#define HW_MODE 1
#include <dlfcn.h>
#endif
#if defined(_WIN32)
#define HW_MODE 2
#include <windows.h>
#endif
@ -32,6 +29,6 @@ struct hotwire_dll_t {
struct hotwire_dll_t hw_dlopen(const char* file, int flags);
// Loads symbol from DLL
inline void* hw_dlsym(struct hotwire_dll_t dll, const char *__restrict symbol);
void* hw_dlsym(struct hotwire_dll_t dll, const char* symbol);
inline int hw_dlclose(void* handle);
int hw_dlclose(void* handle);