shared_library_WIN.cpp
Go to the documentation of this file.
1 #include <string>
2 #include <mutex>
3 #include <Windows.h>
6 
7 namespace BT
8 {
10 {
11  _handle = nullptr;
12 }
13 
14 void SharedLibrary::load(const std::string& path, int)
15 {
16  std::unique_lock<std::mutex> lock(_mutex);
17 
18  _handle = LoadLibrary(path.c_str());
19  if(!_handle)
20  {
21  throw RuntimeError("Could not load library: " + path);
22  }
23  _path = path;
24 }
25 
27 {
28  std::unique_lock<std::mutex> lock(_mutex);
29 
30  if(_handle)
31  {
32  FreeLibrary((HMODULE)_handle);
33  _handle = 0;
34  }
35  _path.clear();
36 }
37 
38 bool SharedLibrary::isLoaded() const
39 {
40  return _handle != nullptr;
41 }
42 
43 void* SharedLibrary::findSymbol(const std::string& name)
44 {
45  std::unique_lock<std::mutex> lock(_mutex);
46 
47  if(_handle)
48  {
49 #if defined(_WIN32_WCE)
50  std::wstring uname;
51  UnicodeConverter::toUTF16(name, uname);
52  return (void*)GetProcAddressW((HMODULE)_handle, uname.c_str());
53 #else
54  return (void*)GetProcAddress((HMODULE)_handle, name.c_str());
55 #endif
56  }
57 
58  return 0;
59 }
60 
61 const std::string& SharedLibrary::getPath() const
62 {
63  return _path;
64 }
65 
66 std::string SharedLibrary::prefix()
67 {
68  return "";
69 }
70 
71 std::string SharedLibrary::suffix()
72 {
73 #if defined(_DEBUG)
74  return "d.dll";
75 #else
76  return ".dll";
77 #endif
78 }
79 
80 } // namespace BT
BT
Definition: ex01_wrap_legacy.cpp:29
BT::SharedLibrary::load
void load(const std::string &path, int flags=0)
Definition: shared_library_UNIX.cpp:14
exceptions.h
BT::SharedLibrary::_handle
void * _handle
Definition: shared_library.h:137
BT::SharedLibrary::SharedLibrary
SharedLibrary()
Creates a SharedLibrary object.
Definition: shared_library_UNIX.cpp:9
BT::SharedLibrary::getPath
const std::string & getPath() const
Definition: shared_library_UNIX.cpp:60
BT::SharedLibrary::prefix
static std::string prefix()
Definition: shared_library_UNIX.cpp:65
BT::SharedLibrary::suffix
static std::string suffix()
Definition: shared_library_UNIX.cpp:74
BT::SharedLibrary::unload
void unload()
Unloads a shared library.
Definition: shared_library_UNIX.cpp:32
BT::SharedLibrary::_path
std::string _path
Definition: shared_library.h:136
BT::SharedLibrary::_mutex
std::mutex _mutex
Definition: shared_library.h:138
BT::SharedLibrary::findSymbol
void * findSymbol(const std::string &name)
Definition: shared_library_UNIX.cpp:48
BT::SharedLibrary::isLoaded
bool isLoaded() const
Returns true iff a library has been loaded.
Definition: shared_library_UNIX.cpp:43
shared_library.h


behaviortree_cpp_v4
Author(s): Davide Faconti
autogenerated on Fri Jun 28 2024 02:20:08