我有一小段调用 C++ DLL 的 python 代码。 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;
}
谢谢!
最佳答案
我似乎误诊了这个问题。问题出在 VSCode 中的 IO,而不是我的代码: https://github.com/Microsoft/vscode/issues/36630
这是一个已知问题,任何连续打印到控制台都可能发生。与 DLL 完全无关! 修复已经在进行中。
关于Python - 从 C++ DLL 错误打印值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49708209/