Я пытаюсь использовать библиотеку COM, которая использует vtable. Однако после того, как я вызываю функции, в стеке происходит что-то интересное, что говорит мне, что я что-то делаю не так.
Файл заголовка с определением vtable вставляется здесь: pastebin.com / m2d66c18c (см., В частности, код, начинающийся со строки 810). Пример вставлен здесь: pastebin.com / m1b46e662 .
Таблица заполняется правильными местоположениями для функций, но когда я вызываю функцию (и), они, кажется, ищут неправильные местоположения для аргументов в стеке. Кроме того, после вызова функций в таблице, стек испортился, и моя программа падает. Я попытался изменить тип функции на __cdecl
и __stdcall
, но это ничего не дает.
Это либо мой код, либо библиотека, и компания, написавшая библиотеку, мне не ответила - потому что я полагаю, что это выходные. Кроме того, есть демонстрационное приложение, которое использует библиотеку, и это работает - так что я думаю, что это мой код / компилятор (gcc) / что-то еще, а не библиотека.
Может ли быть что-то конкретное, что вам нужно сделать, чтобы использовать библиотеку COM?