RuntimeLibraryLoader.cpp 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. /*
  2. * Author: Patrick-Christopher Mattulat
  3. * Company: Lynar Studios
  4. * E-Mail: webmaster@lynarstudios.com
  5. * Created: 2022-09-06
  6. * Changed: 2022-09-06
  7. *
  8. * */
  9. #include <ls_std/os/library/RuntimeLibraryLoader.hpp>
  10. #include <ls_std/core/exception/IllegalArgumentException.hpp>
  11. #if defined(unix) || defined(__APPLE__)
  12. #include <dlfcn.h>
  13. #endif
  14. ls::std::os::RuntimeLibraryLoader::RuntimeLibraryLoader(ls::std::os::RuntimeLibraryLoaderParameter _parameter) : parameter(::std::move(_parameter))
  15. {
  16. if (this->parameter.path.empty())
  17. {
  18. throw ls::std::core::IllegalArgumentException{};
  19. }
  20. }
  21. bool ls::std::os::RuntimeLibraryLoader::open()
  22. {
  23. bool opened;
  24. #if defined(unix) || defined(__APPLE__)
  25. opened = this->_openUnix();
  26. #endif
  27. #ifdef _WIN32
  28. opened = this->_openWindows();
  29. #endif
  30. return opened;
  31. }
  32. #if defined(unix) || defined(__APPLE__)
  33. bool ls::std::os::RuntimeLibraryLoader::_openUnix()
  34. {
  35. this->handle = dlopen(this->parameter.path.c_str(), RTLD_LAZY);
  36. return this->handle != nullptr;
  37. }
  38. #endif