Всем здрасьте! Неподскажете ли, как вот это: ----------------------------------------------(Это из SDK для написания плагинов к 3DMAX, файл inode.h) class INode: public ReferenceTarget, public FPMixinInterface { public: // Prevents methods not overriden by this class to be hidden by the overriden version // Warning: the names it declares take on the access rights of the // section where the using statement is placed using ReferenceTarget::GetInterface; // If this was a temporary INode (like an INodeTransformed) this will delete it. virtual void DisposeTemporary() {} // In the case of INodeTransformed, this gets a pointer to the real node. virtual INode *GetActualINode() {return this;} virtual TCHAR* GetName()=0; virtual void SetName(TCHAR *s)=0; // .... и еще боле сотни функций }; ------------------------------------------------ Как сие выглядило бы в бинарном (ассемблерном) виде? Все пимеры в документациях (MSDN,различные SDK) на С++ . А я этого языка просто непонимаю. Допустим мне нужно вызвать функцию virtual void SetName(TCHAR *s)=0, я получил указатель на класс(интерфейс) INode пусть он будет в переменной [@inode] данную функцию я вызываю так: mov eax,[@inode] mov eax,[eax] call [eax+12],offset newname Но почему-то нифига неполучается, я вызываю совсем не то что надо.Причем с другими классами все получалось правильно. И как мне в Visual studio net (2003) откомпилить минимально примеры из различных SDK, и где указывать пути к SDK? Мне ненужно получать работоспособное приложение , а только лишь смотреть полученный код, Или проще говоря переделать сишные *.h файлы в ассемблерные *.INC . Или может есть другие более простые способы для этих целей?
Вообще, обычно пользуются специальными тулзами для дампа объектников. Например, objdump в GCC или wdis в Watcom. Старый Borland C++ 3.1 тоже мог генерировать asm-файлы при компиляции.
У тебя и не получится, потому что для вызова виртуальных методов нужно прочитать адрес функции из таблицы виртуальных функций. Обычно адрес таблицы виртуальных функций хранится по нулевому смещению относительно начала объекта.
SadKo , а неможноль немного поподробнее? Вот дпустим получил указатель на INode а дальше как? Он же наверное и есть адрес таблици функций, или я совсем ничего непонимаю .?