После загрузки библиотеки Dynami c и GetProcAddress
обычно получается указатель на функцию типа void*
. Чтобы вызвать функцию, выполняя это во время компиляции, нужно привести указатель к нужному типу указателя.
Однако, если тип неизвестен во время компиляции, а во время выполнения, и есть много возможностей типа. В этом сценарии кажется, что нужно «вызвать» функцию вручную, иначе говоря, обновить стек и регистры в соответствии с ABI.
Вопрос: есть ли какой-нибудь открытый исходный код, который позаботится об этом в общих платформах и ABI? Если нет, то как мне реализовать его самостоятельно?
В документации Microsoft abi есть кое-что о cdecl и других соглашениях, и кажется, что 32-битная и 64-битная версии отличаются. ABI на Linux такой же или что-то еще?