Как сделать экпортируемую dll функцию без хедера членом класса?
Добрый день.
Имеется некая dll без хедера, подгружаю ее методом LoadLibrary, после хочу подгрузить из нее экспортируемую функцию методом GetProcAddress, допустим объявление функции в ней такое: int add( int, int );
Проблема вот в чем - нужно создать класс, с функцией int add( int, int );, причем чтобы функция класса прямо указывала на функцию dll, не оборачивая ее, и я мог ее использовать как обычную функцию вот так: int summ = someclass->add(5,6);
Сам так пытался сделать, но запутался в ссылках и указателях, пока что использую typedef, а функция у меня хранится как член класса (void*), и вызвать я ее могу только после приведения типа к типу FUNC_ADD.
#upd:
Про передачу this как параметра и не догадывался. Вообще кажется странным, что в таком мощном языке нельзя провернуть подобный трюк.
Спасибо за ответы =)
У вас нет понимания, чем метод от функции отличается someclass->add(5,6);
имеет 3 входных параметра, а int add( int, int );
всего 2.
Так что без оборачивания ничего не выйдет.
Совершенно верно Петр говорит, this в мешке не утаишь).
Кроме того, если либа грузится через LoadLibrary, т.е. связывания на этапе компиляции нет, то и вызывать ее надо через указатель, а тогда без обертки соответствие между какой-либо функцией, объявленной в классе (пусть даже это будет статическая функция) и этим указателем не проставить в принципе, т.к. где-то должна произойти косвенная адресация и передача управления в DLL.