Слишком много аргументов в моей функции - Python - PullRequest
6 голосов
/ 14 сентября 2011

Я пытаюсь получить доступ к моей функции в DLL и передать по значению как целое число в нем.Но я получаю ValueError как:

Procedure probably called with too many arguments (4 bytes in excess)

Мой скрипт Python .py, как показано ниже:

func2.restype = c_int
func2.argtypes = [c_int]
func2(3)

...

Моя фактическая функция в DLLэто просто простая функция вроде:

int DLLfun2(int argtest) { return argtest + 1; };

...

Выглядит как простая проблема, но я предполагаю, что я что-то упустил.Пожалуйста, помогите.

Приветствия.

1 Ответ

4 голосов
/ 14 сентября 2011

выглядит странно, потому что целое число должно быть автоматически приведено, но попробуйте с func2(c_int(3))

РЕДАКТИРОВАТЬ: Согласно ctypes doc это исключение может быть вызвано из-за неправильного соглашения о вызовах (cdecl вместо stdcall). Но функция все еще вызывается (просто своего рода предупреждение: s)

Обязательно декларируйте в своей dll.

Если вы загружаете свою библиотеку с помощью windll, она должна использовать соглашение о вызовах stdcall, в противном случае используйте модуль cdll.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...