Python — печать значений из ошибки c ++ DLL

У меня есть небольшой фрагмент кода Python, который вызывает C ++ DLL. Функция DLL принимает указатель на таблицу из 6 значений типа double (для вывода) и таблицу строк для ввода.

myDll.get_results.argtypes = [ ctypes.POINTER(ctypes.c_double * 6), ctypes.POINTER(ctypes.c_char*100) ]

results = (ctypes.c_double * 6)()
myDLL.get_results(ctypes.byref(results), input_string)

Затем я распечатываю результаты:

for r in results:
print r

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

0.0
0.1
Traceback (most recent call last):
File "d:\Documents\test.py", line 109, in <module>    execute()
File "d:\Documents\test.py", line 45, in execute
print(f)IOError: [Errno 0] Error
PS D:\Documents>

Это также (кажется) никогда не произойдет, если я установлю точку останова перед печатью. Я пытался перевести 1 секунду в спящий режим перед печатью, но это не помогло, но ошибка все равно возникает.

На стороне C ++ моя функция выглядит так:

RESULT_API void get_results(double res[6], char c[][100]) {
for (int i = 0; i < 6; i++)
res[i] = (double)i*0.1;
}

Спасибо!

2

Решение

Я, кажется, неправильно диагностировал проблему. Проблема с IO в VSCode, а не с моим кодом:
https://github.com/Microsoft/vscode/issues/36630

Это известная проблема, которая может возникнуть при любой последовательной печати на консоли. Не имеет никакого отношения к DLL!
Исправление уже в пути.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]