v1.4.4
This commit is contained in:
commit
9c94d113d3
10260 changed files with 1237388 additions and 0 deletions
46
source/core/StarDynamicLib_unix.cpp
Normal file
46
source/core/StarDynamicLib_unix.cpp
Normal file
|
@ -0,0 +1,46 @@
|
|||
#include "StarDynamicLib.hpp"
|
||||
|
||||
#include <dlfcn.h>
|
||||
#include <pthread.h>
|
||||
#include <sys/time.h>
|
||||
#include <errno.h>
|
||||
|
||||
namespace Star {
|
||||
|
||||
struct PrivateDynLib : public DynamicLib {
|
||||
PrivateDynLib(void* handle)
|
||||
: m_handle(handle) {}
|
||||
|
||||
~PrivateDynLib() {
|
||||
dlclose(m_handle);
|
||||
}
|
||||
|
||||
void* funcPtr(const char* name) {
|
||||
return dlsym(m_handle, name);
|
||||
}
|
||||
|
||||
void* m_handle;
|
||||
};
|
||||
|
||||
String DynamicLib::libraryExtension() {
|
||||
#ifdef STAR_SYSTEM_MACOS
|
||||
return ".dylib";
|
||||
#else
|
||||
return ".so";
|
||||
#endif
|
||||
}
|
||||
|
||||
DynamicLibUPtr DynamicLib::loadLibrary(String const& libraryName) {
|
||||
void* handle = dlopen(libraryName.utf8Ptr(), RTLD_NOW);
|
||||
if (handle == NULL)
|
||||
return {};
|
||||
return make_unique<PrivateDynLib>(handle);
|
||||
}
|
||||
|
||||
DynamicLibUPtr DynamicLib::currentExecutable() {
|
||||
void* handle = dlopen(NULL, 0);
|
||||
starAssert(handle);
|
||||
return make_unique<PrivateDynLib>(handle);
|
||||
}
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue