2025-11-13 03:34:33 +00:00
|
|
|
#include <Mw/Milsko.h>
|
|
|
|
|
|
2025-11-13 10:50:32 +00:00
|
|
|
#if defined(_WIN32)
|
2025-11-13 03:34:33 +00:00
|
|
|
void* MwDynamicOpen(const char* path) {
|
|
|
|
|
return LoadLibrary(path);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void* MwDynamicSymbol(void* handle, const char* symbol) {
|
|
|
|
|
return GetProcAddress(handle, symbol);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void MwDynamicClose(void* handle) {
|
|
|
|
|
FreeLibrary(handle);
|
2025-11-13 10:50:32 +00:00
|
|
|
}
|
2026-04-15 20:21:20 -07:00
|
|
|
#elif defined(CLASSIC_MAC_OS)
|
|
|
|
|
void* MwDynamicOpen(const char* path) {
|
|
|
|
|
CFragConnectionID connID;
|
|
|
|
|
Ptr* addr;
|
|
|
|
|
unsigned char err[255];
|
|
|
|
|
|
|
|
|
|
if(GetSharedLibrary((ConstStr63Param)path, kPowerPCCFragArch, kPrivateCFragCopy,
|
|
|
|
|
&connID, addr, err)) {
|
|
|
|
|
printf("Error getting %s: %s\n", path, err);
|
|
|
|
|
return NULL;
|
|
|
|
|
};
|
|
|
|
|
return connID;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void* MwDynamicSymbol(void* handle, const char* symbol) {
|
|
|
|
|
CFragConnectionID connID = (CFragConnectionID)handle;
|
|
|
|
|
Ptr* symAddr;
|
|
|
|
|
CFragSymbolClass* symClass;
|
|
|
|
|
OSErr err;
|
|
|
|
|
if((err = FindSymbol(connID, (ConstStr63Param)symbol, symAddr, symClass))) {
|
|
|
|
|
printf("Error getting %s: %d\n", symbol, err);
|
|
|
|
|
return NULL;
|
|
|
|
|
};
|
|
|
|
|
return symAddr;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void MwDynamicClose(void* handle) {
|
|
|
|
|
CFragConnectionID connID = (CFragConnectionID)handle;
|
|
|
|
|
CloseConnection(&connID);
|
|
|
|
|
}
|
2026-01-09 14:43:44 -07:00
|
|
|
#elif defined(__unix__) || defined(__APPLE__)
|
2025-11-13 10:50:32 +00:00
|
|
|
void* MwDynamicOpen(const char* path) {
|
|
|
|
|
return dlopen(path, RTLD_LOCAL | RTLD_LAZY);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void* MwDynamicSymbol(void* handle, const char* symbol) {
|
|
|
|
|
return dlsym(handle, symbol);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void MwDynamicClose(void* handle) {
|
2025-11-13 03:34:33 +00:00
|
|
|
dlclose(handle);
|
|
|
|
|
}
|
2025-11-13 10:50:32 +00:00
|
|
|
#endif
|