Я думал, что было бы здорово иметь несколько классов, чтобы обернуть вокруг 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();
}
Проблема возникает из-за того, что я должениметь динамические типы данных для параметров и несколько длин для передачи в указатель реальной функции.Я мог бы обойти несколько длин аргументов, указав их в конструкторе и имея конкретные методы, но как насчет типов данных?
РЕДАКТИРОВАТЬ: я создал классы на основе ответов для любого, чтобы использовать здесь:https://github.com/ic3man5/ice--