Есть класс:
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

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Привести функцию типа void(C::*method)(Args...) к void* (2018)
- Форум QComboBox - события вызова меню (2014)
- Форум Александреску, C☩☩, неявное преобразование типов. (2008)
- Форум C++ и замыкания (2005)
- Форум Вызов Python функций из C++. boost::python, Pyhton C-API. (2017)
- Форум Поле типа unique_ptr и деструктор (2019)
- Форум [c++] CL's with-open-file like macro in C++ (2008)
- Форум Оптимизатор GCC 4.4 (2009)
- Форум Named entity graph сразу для двух списков портит данные (2018)
- Форум Можно ли кастовать указатели на оbj-c-шные классы в void* и обратно? (2014)