В основном я пытаюсь использовать предварительно собранные библиотеки Openh264 с их веб-страницы.
Использование LoadLibrary и GetProcaddress работает, пока я не вызову требуемый WelsCreateEncoder ().
Ошибка VSговорит мне, что ESP не был сохранен правильно.
В отладчике я могу просто продолжать работать, и все работает нормально.Я хорошо отлаживал, и у меня есть все для работы.но как отдельное приложение оно просто падает.
Я предполагаю, потому что это библиотека C, а мое приложение c ++, что мои соглашения о вызовах неверны?
https://github.com/cisco/openh264
Я добавил ASM для начала и конца WelsCreateDecoder.Это я или похоже, что он забывает sub esp, 4?
typedef int(WINAPI * _pWelsCreateSVCEncoder)(ISVCEncoder** ppEncoder);
typedef void(WINAPI * _pWelsDestroySVCEncoder)(ISVCEncoder* ppEncoder);
0F3B8BF0 | 55 | push ebp |
0F3B8BF1 | 8BEC | mov ebp,esp |
...
0F3B8C0F | 33C0 | xor eax,eax |
0F3B8C11 | 85C9 | test ecx,ecx |
0F3B8C13 | 0F94C0 | sete al |
0F3B8C16 | 5D | pop ebp |
0F3B8C17 | C3 | ret |