Я должен использовать dll C++ с использованием MFC, и я бы хотел назвать его из python. Эта библиотека содержит этот заголовок в файле .hC++ dll, вызываемый из Python
LONG CommOpen(BYTE port, LONG baud_rate);
Тогда я вижу в свободном ПО dllexp, что моя функция называется? CommOpen @ CFIPcmd @@ QAEJEJ @ Z в бинарный файл, ошибка не сообщается, когда я в питоне
import ctypes
lib = ctypes.WinDLL('C:\Users\toto\FIProtocol.dll')
prototype = WINFUNCTYPE(c_long, c_byte, c_long)
testPt = ctypes.WINFUNCTYPE (prototype)
testApi = testPt (("[email protected]@@[email protected]", lib))
до тех пор пока оно не похоже на работу, но я хотел бы назвать в Python эквивалент в C++ из
Long l= CommOpen(5 ,115200);
но я не плавника d знаю, как действовать. Любая помощь будет действительно оценена!
Ну, кажется, очень хорошо, но я получаю >>> L = CommOpen (5, 115200) Traceback (самый последний вызов последнего): Файл "", строка 1, в WindowsError: исключение: запись нарушения доступа 0x1D1C5504, но почему? –
Разделите проблему на две части. Напишите простую DLL, содержащую функцию с тем же именем и параметрами, и вызовите ее из Python. Попросите его вызывать ['MessageBeep'] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms680356 (v = vs.85) .aspx) N раз. Это работает, DLL, вероятно, терпит неудачу, потому что не находит какого-либо предположения о среде, в которой она была создана для запуска. – ixe013
См. Мое обновление. Вы никогда не сможете вызвать эту функцию из ctypes. –