вызовы Win32 API из Cython - PullRequest
       3

вызовы Win32 API из Cython

0 голосов
/ 10 июля 2011

Привет, я пытаюсь вызвать функцию Win32 CreateFileA из файла pyx (файл cython) (windows.h уже включен в файл pxd), но это не работает ... кто-нибудь когда-либо пытался сделатьтак что ... нужна помощь, пожалуйста

Дополнительная информация: я не получил ошибок при компиляции с Mingw, но при выполнении я получаю -1 в качестве возвращаемого значения ..

иллюстрация:

myfile.pxd

cdef extern from "ftd2xx.h":

   stuff....

   # CreateFileA declaration

   HANDLE **CreateFileA***(LPCSTR lpFileName, DWORD dwDesiredAccess, 
       DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, 
       DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, 
       HANDLE hTemplateFile)*

myfile.pyx

cimport myfile.pxd

def somefuction()
HANDLE a = myfile.**CreateFileA**(......)

при исполнении я получаю -1

1 Ответ

2 голосов
/ 25 июля 2011

Отрицательный 1 (возврат -1) означает, что было несколько ошибок.Вполне возможно, что вы подключаетесь не из того места.

В любом случае, мой опыт работы с Python говорит мне, что вы можете использовать win32all, от Mark Hammond, для вызова win32api.Это должно решить все ваши проблемы.

Если это не так:

Я слонялся по переполнению стека и обнаружил, что у многих людей были похожие проблемы.Вот некоторые вещи, которые вы можете попробовать:

mingw_setup_args={'options': {'build_ext': {'compiler': 'mingw32'}}} import pyximport; pyximport.install(setup_args=mingw_setup_args)

Просмотрите: c: \ Python2x \ Lib \ distutils \ distutils.cfg:

[build]
compiler = mingw32

[build_ext]
compiler = mingw32

Я рекомендуюВы разветвляться.Если вы заметите правую боковую панель «связанный» div на этой странице, вы увидите, что есть много людей, которые задавали подобные вопросы.Я надеюсь, это поможет вам начать.В качестве альтернативы я рекомендую вам поискать лучший компилятор - что даст вам полный отчет об ошибках.Опубликуйте сообщение об ошибке здесь.Постарайтесь быть максимально точным, если вы хотите что-то исключить, чтобы вы удалили как можно меньше полезных данных.Вы обязательно можете найти решение, если оно существует, при условии, что вы найдете полное сообщение об ошибке.

Я почти уверен, что где-то существует полный отчет об ошибках, и вы просто не знаете, где искать.В самом начале своей карьеры программиста я обнаружил, что это всегда тот случай, когда программисту кажется, что «нет ошибки»: они смотрят не туда.Итак, вы должны выяснить, где искать полный отчет об ошибке.

...