0 Members and 1 Guest are viewing this topic.
Append, насколько я знаю, указатель на this (self) передаётся в паскале как обычный параметр, поэтому просто вызовите метод с одним параметром.Достаточно в хидере поправить "virtual BOOL __stdcall IsCanceled(IAIMPTaskOwner*);"Должно работать, но это не точно Не надо будет тогда API менять.
Так он и так же неявно передается при вызове функции от объекта класса, с Вашим методом теперь еще и два раза.
Append, насколько я знаю, указатель на this (self) передаётся в паскале как обычный параметр, поэтому просто вызовите метод с одним параметром.Достаточно в хидере поправить "virtual BOOL __stdcall IsCanceled(IAIMPTaskOwner*);"Должно работать, но это не точно
Вызвано исключение по адресу 0x7AE39451 (AIMP.Shared.dll) в AIMP.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xCC000000.
Проверяли в моем проекте, который кидал выше(AIMPTaskCpp)?
Прошу прощения не увидел новый интерфейс IAIMPServiceThreads.
Да, такое решение работает - на мою сторону приходят все параметры верно, НО - при каждом вызове стэк инкрементится на один push. Т.е. если часто этот метод дергать, можем получить переполнение стэка
Значит нужен cdecl, вызывающий стек почистит. И интерфейс будет работать всегда.
Там важно то, что у IAIMPTask, IAIMPTaskOwner новые GUID-ы
Не лучше ли создать еще один хедер, например apiThreading2? Мне в плюсах нужна только процедура ExecuteInMainThread и задачу в неё подаю обычно из двух процедур - <Config>.SetValue* и <SomeUIControl>.SetValue*, думаю будет не совсем критично если после первой процедуры не будет проверки, а так потеряется совместимость.
С ними я так понимаю тоже отпечатались? В документации они возвращают HRESULT, а объявлены как void.(да пробовал менять возвращаемое значение на HRESULT - возвращается *ничего*)
В данном случае косяк в документации. Я как раз сегодня добавлял туда новые интерфейсы и обнаружил нестыковку
Не хватает 3го примечания о том что функции можно вызвать только в главном потоке.