Python - 从 C++ DLL 错误打印值

标签 python c++ io runtime-error ioerror

我有一小段调用 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/

相关文章:

python - 使用 Boto3 获取特定 S3 文件夹中的对象数

c++ - 使用 C++ 或 LabView 读取和写入字段包含逗号的 .CSV 文件

java - 在java中显示2位输出小数

java - 关于通过ByteBuffer写入Char的查询

python - numpy.bincounts 的反转?

python - 安装 Google Cloud SDK 时出现 httplib2.SSLHandshakeError

java - 将字符串数组从 Java 传递到 C++

c++ - 正确覆盖文件元素时出现问题(数字)

python - 使用python选择mysql中的零日期

c++ - 使用库的 Makefile