python通过Ctypes 模块 调用C++动态链接库,遇到的access violation reading 0x0000000000000000解决方案

问题是:通过C++ 程序生成 DLL 内部使用了STL 等模板以及指针和引用。通过ctypes 模块给python 程序调用。有时会报OSError: exception: access violation reading 0x0000000000000000
目前看是指针跑飞的问题。我在python程序中已经指定了动态链接库中调用函数的 调用约定、函数返回类型以及函数形参类型。现在可能存在的问题是,C++程序使用了大量的vector的指针与引用,
是否是内存释放问题?还是指针参数指定问题?

答:目前应该是DLL调用后堆栈的管理问题导致,如果在C++ 程序中使用了大量的vector,在C++ 程序可以靠系统自动释放,但如果动态链接库调用方不能指定释放方式,需要靠C++程序中自己主动释放。

你可能感兴趣的:(技巧)