PureBasic

CallCFunctionFast()

Синтаксис

Result = CallCFunctionFast(*FunctionPointer [,Parameter1 [, Parameter2...]])

Описание


Вызывает функцию напрямую, используя её адрес, с учётом соглашения о вызове 'cdecl'. Вызываемая функция должна использовать соглашение о вызове 'cdecl' (соглашение, используемое языком C).

Параметры

*FunctionPointer Адрес вызываемой функции.

Этот указатель можно получить с помощью GetFunction(), GetFunctionEntry() или LibraryFunctionAddress(). Использование CallCFunctionFast() - это быстрейший способ вызова функций библиотеки, особенно если были сохранены результаты вызова: GetFunction () или LibraryFunctionAddress(). Это связано с тем, что этой функции не требуется искать имя библиотечной функции.
Parameter1, Parameter2... Параметры для функции. Количество этих параметров должно совпадать с количеством параметров вызываемой функции. Максимальное количество поддерживаемых параметров равняется 20.

Возвращаемое значение

Возвращает Результат вызванной библиотечной функции.

Комментарии

Если функция библиотеки используют соглашение о вызове 'Cdecl', то эта команда подходит для вызова такой функции.
Однако большинство DLL в ОС Microsoft Windows используют соглашение о вызове 'stdcall', таким образом для них требуется функция CallFunctionFast(). В отличие от Linux, все функции являются общими для 'Cdecl' библиотек.

Примечание: Эта функция не очень гибка и не обрабатывает string/float/double/quad параметры или string/float/double/quad возвращаемые значения. Настоятельно рекомендуется использование прототипов.

Пример

Procedure Function1()
    Debug "Я вызываю Function1 по имени"
EndProcedure

NewMap *FuncPtr()
*FuncPtr("Function1") = @Function1()

CallCFunctionFast(*FuncPtr("Function1"))

См. также

GetFunction(), CallFunctionFast(), Прототипы

Поддерживаемые OS

Все

<- CallCFunction() - Оглавление Library - CallFunction()->

h��"�/