Есть класс:
class Object {
public:
bool CheckVar( void );
...
}
В памяти программы есть его экземпляр object, нужно из библиотеки подгруженной к ней через LD_PRELOAD вызвать object->CheckVar().
Вызываю так:
Object* object = GetObjAddrFromMemy();
long CheckVar_addr = GetProgAddrFromMem() + CHECK_VAR_OFFSET;
bool CheckVar_result = false;
asm(
"movl %1, (%%esp)\n"\
"call *%2\n"\
"movb %%al, %0\n"\
: "=m" (CheckVar_result)\
: "r" (object), "r" (CheckVar_addr)
);
Хотел бы узнать, можно ли обойтись без асма?
Например так нельзя (не даёт привести тип):
bool (Object::*CheckVar)() = (bool (Object::*)())(CheckVar_addr);
CheckVar_result = (object->*CheckVar)();
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от mv
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Как класс преобразовать в структуру ? (2008)
- Форум Привести функцию типа void(C::*method)(Args...) к void* (2018)
- Форум Как убрать прямое обращение к переменной в шаблоном классе. (2021)
- Форум Работа со скриптами (2013)
- Форум QComboBox - события вызова меню (2014)
- Форум C++ и замыкания (2005)
- Форум Вопрос по архитектуре приложения (2015)
- Форум Александреску, C☩☩, неявное преобразование типов. (2008)
- Форум Можно ли кастовать указатели на оbj-c-шные классы в void* и обратно? (2014)
- Форум Вызов Python функций из C++. boost::python, Pyhton C-API. (2017)