Есть UserApi некой программы. Функции доступа к Api реализованы при помощи библиотеки dll.
Функция 1 описана в документации, как:
function oziFindOzi:integer;stdcall;
и выводит “0”, если программа запущена и “-1”, если не запущена.
Соответственно код:
import ctypes lib = ctypes.WinDLL("<путь до dll>\OziAPI.dll") print(lib.oziFindOzi())
даст результат:
“0” или “-1”
Функция 2 должна возвращать текущую версию программы:
function oziGetOziVersion(var Version:pansichar;var DataLength:integer):integer;stdcall;
Соответственно:
import ctypes lib = ctypes.WinDLL("<путь до dll>\OziAPI.dll") print(lib.oziGetOziVersion())
Даст ошибку: OSError: exception: access violation writing 0xFFFFFFEB
Если вместо
print(lib.oziGetOziVersion())
print(lib.oziGetOziVersion)
, результат будет таким: <_FuncPtr object at 0x01DFE468>
Как всё-таки вернуть результат работы функции oziGetOziVersion?