Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm: Общие вопросы > Как выглядит сишный класс в памяти?


Автор: tripsin 14.2.2006, 20:40
Мне надо ручками сделать в памяти экземпляр С-шного класса и передать ссылку на него, как параметр библиотечной функции. smile Подскажите, как он выглядит в памяти (примерную структуру данных)

Автор: maxim1000 15.2.2006, 01:33
можно просто сделать объект на C++ и посмотреть на него в памяти smile
а вообще, если не ошибаюсь, это зависит от компилятора...

Автор: tripsin 15.2.2006, 05:24
Класс надо сунуть в виндовую API-фунцию, поэтому выглядеть он должен одинаково, независимо от компилятора. Может различаться реализация методов класса, но мне это не важно. Я так понял, что в классе имеются только указатели на функции, реализующие методы, а сами реализации лежат отдельно.

Автор: maxim1000 15.2.2006, 12:18
а что за функция?

Автор: oleg1973 15.2.2006, 12:58
наверно класс выглядит примерно как интерфейс обьекта , повторяю примерно
в fasm есть пример работы с СОМ обьектами и там есть сам обьект
в принципе получается список адресов/методов которые можно вызывать

Автор: tripsin 15.2.2006, 19:06
Я хотел попользовать GDI+. C получением списка кодеков и их идентификаторов я разобрался. Возникла проблема с преобразованием HBITMAP в объект GDI+ (кажется GdipCreateBitmapFromHBITMAP из gdiplusflat.h). Функция требует объект GBitmap. Когда я на дурака выделил пару метров памяти, обнулил и дал на нее ссылку, прога вылетела с ошибкой куда-то в нулевые адреса. Скорее всего вызывался кнструктор класса, и, т.к. по переданному указателю были одни нули, то вызов туда и пошел. Так вот надо определиться со структурой стандартного класса и поставить адреса своих процедур.
А может я слишком загнался smile Может кто умный уже сделал библиотечку GDI+ для асма, и для нас глупых бесплатно выложил? smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)