Соглашение о вызовах Delphi thiscall и указатель класса

У меня есть DLL, которая использует это соглашение о вызовах. Я искал в Интернете и нашел ответ на этот вопрос здесь: Соглашение о вызовах Delphi thiscall

У меня проблема в том, что этот ответ никогда не объясняет, где взять указатель класса. Я попытался вызвать функцию «новый оператор» в DLL, и кажется, что она возвращает действительный указатель, но приведенное ниже решение у меня не работает: asm mov ecx, myClassPointer end;

Я хотел бы получить более подробный ответ, в том числе о том, как получить указатель класса.


person Ales Vidmar    schedule 07.04.2017    source источник
comment
Я не думаю, что вы можете рассчитывать на использование этого интерфейса непосредственно из Delphi. Напишите адаптер С++ или попросите разработчика предоставить надлежащий интерфейс. Предположим, вы взломали соглашение о вызовах. Как вы собираетесь создавать экземпляры?   -  person David Heffernan    schedule 07.04.2017
comment
@ Дэвид прав. thiscall используется в классах, и вы не сможете использовать их напрямую. Вам понадобится оболочка C или оболочка COM. См. здесь: rvelthuis.de/articles/articles-cppobjs.html.   -  person Rudy Velthuis    schedule 07.04.2017
comment
В треде, на который я ссылался, вы, Дэвид, сказали, что написание адаптеров на ассемблере для вызова функции будет работать. Мне просто нужен пример, чтобы правильно понять, как это сделать.   -  person Ales Vidmar    schedule 07.04.2017
comment
Проблема в том, как вы вызываете конструкторы или передаете параметры std::string и т.д.   -  person David Heffernan    schedule 07.04.2017
comment
Удивительно, но я заставил разработчика прислать мне заголовки и файлы .lib, так что теперь я могу написать плоскую оболочку. Спасибо вам за помощь.   -  person Ales Vidmar    schedule 10.04.2017