GLIM
Loading...
Searching...
No Matches
load_module.hpp
1#pragma once
2
3#include <memory>
4
5namespace glim {
6
7void open_so(const std::string& so_name);
8
9void* load_symbol(const std::string& so_name, const std::string& symbol_name);
10
11template <typename Module>
12std::shared_ptr<Module> load_module_from_so(const std::string& so_name, const std::string& func_name) {
13 auto func = (Module * (*)()) load_symbol(so_name, func_name);
14 if (func == nullptr) {
15 return nullptr;
16 }
17
18 return std::shared_ptr<Module>(func());
19}
20
21} // namespace glim