Я подумал, что было бы здорово иметь несколько классов, чтобы обернуть вокруг LoadLibrary
и GetProcAddress
, Library
и Function
соответственно. Пока я думал об этом, я не уверен, что это возможно. Вот что я думаю:
Класс Library
:
class Library
{
HANDLE m_handle;
public:
// Handles initializing the DLL:
Library(std::string name);
// Deinitializes the DLL
~Library();
HANDLE getHandle();
bool isInitialized();
}
И класс Function
:
class Function
{
public:
Function(Library& library, std::string name);
void* call(/* varg arguments? */) throw(exception);
bool isValid();
}
Проблема возникает потому, что я должен иметь динамические типы данных для параметров и несколько длин для передачи реальному указателю функции. Я мог бы обойти множественную длину аргументов, указав ее в конструкторе и имея определенные методы, но как быть с типами данных?
EDIT: Я создал классы на основе ответов для всех желающих здесь: https://github.com/ic3man5/ice--