当ctypes dll调用printf时出现python终止错误

时间:2014-11-04 16:25:49

标签: python dll ctypes

我正在开发一个python系统,其中一些核心dll通过ctypes访问。我已将问题减少到这种情况:执行一个加载(无需调用)两个dll的模块,其中一个调用printf - 退出时会出现此错误。

  

此应用程序已请求运行时将其终止   不寻常的方式请联系应用程序的支持团队获取更多信息   信息。

我的环境:
  - Windows 7,SP1   - Python 2.7.8   - MinGW v 3.20

此测试用例改编自使用MinGW编写dll的教程:

/* add_core.c */
__declspec(dllexport) int sum(int a, int b) {
    return a + b;
}

/* sub_core.c */
#include <stdio.h>
__declspec(dllexport) int sum(int a, int b) {
    printf("Hello from sub_core.c");
    return a - b;
}

prog.py

import ctypes
add_core_dll = ctypes.cdll.LoadLibrary('add_core.dll')
add_core_dll = ctypes.cdll.LoadLibrary('sub_core.dll')
> make
gcc -Wall -O3 -g -ansi -c  add_core.c -o add_core.o
gcc -g -L. -ansi             -shared add_core.o -o add_core.dll
gcc -Wall -O3 -g -ansi -c  sub_core.c -o sub_core.o
gcc -g -L. -ansi             -shared sub_core.o -o sub_core.dll

>python prog.py

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

并弹出一个消息对话框,效果相同:“python.exe已停止工作......”。

请注意,程序按预期执行并产生正常输出。终止时的这个错误只是我想摆脱的一大麻烦。

1 个答案:

答案 0 :(得分:0)

同样的情况发生在: Windows 7企业版,SP1 Python 2.7.11 mingw32-g ++。exe 5.3.0