python调用dll的释放问题

问题描述

python调用dll的释放问题
小弟用python 写了个调用SiInterface.dll的adaptor.exe
这里有调用win32api.FreeLibrary()释放dll了,
运行该adaptor.exe后,做完一个交易后,其他程序调用这个dll做交易就会加载不到这个dll请问是我没释放成功SiIterface.dll 还是adaptor.exe打开运行后,他就一直占用着SiInterface.dll
因为在使用adaptor.exe做完一个交易后关闭该exe,再使用别的程序调用SiInterface.dll就是ok的请教各位大神如何在不关闭adaptor.exe情况下 还能是别的程序能够访问该SiInterface.dll

def call_mi_dll(sIn):dll = ctypes.WinDLL('SiInterface.dll')sIn += ' '*(512-len(sIn))sOut = ' '*512i=' '*1024i=ctypes.c_char_p(i)sIn = ctypes.c_char_p(sIn)sOut = ctypes.c_char_p(sOut)    print ""calling: SiInterface.dll -> INIT""ret=dll.INIT(i)print ""Init :""+str(ret)print ""calling: SiInterface.dll -> BUSINESS_HANDLE""dll.BUSINESS_HANDLE(sIn sOut)win32api.FreeLibrary(dll._handle)return sOut.value

解决方案

dll可以被多个进程共享,先看其他进程是否调用到你的dll函数,是不是函数内部处理的问题

时间: 2024-09-09 02:43:44

python调用dll的释放问题的相关文章

dll动态库-python 调用DLL 动态库之后 怎么释放

问题描述 python 调用DLL 动态库之后 怎么释放 各位大神,请问python 利用 ctypes调用DLL之后怎么释放啊 解决方案 不需要释放,CDLL析构中会自动释放

c++生成dll使用python调用dll的方法_python

第一步,建立一个CPP的DLL工程,然后写如下代码,生成DLL 复制代码 代码如下: #include <stdio.h>     #define DLLEXPORT extern "C" __declspec(dllexport)     DLLEXPORT int __stdcall hello()     {         printf("Hello world!\n");         return 0;     } 第二步,编写一个 pyt

Python 调用DLL操作抄表机_python

# -*- coding: GBK -*- from ctypes import * dll = windll.LoadLibrary('JBA188.dll') a = dll.test() print '测试设备连接状态%s' % a srcName = c_char_p("publish_pd.bin") decName = c_char_p('d:\\publish_pd.bin') b = dll.upfile(srcName,decName) print '将文件上传至计算

python 调用HBase的简单实例_python

新来的一个工程师不懂HBase,java不熟,python还行,我建议他那可以考虑用HBase的thrift调用,完成目前的工作. 首先,安装thrift 下载thrift,这里,我用的是thrift-0.7.0-dev.tar.gz 这个版本 tar xzf thrift-0.7.0-dev.tar.gz cd thrift-0.7.0-dev sudo ./configure --with-cpp=no --with-ruby=no sudo make sudo make install 然

Jna调用dll文件,怎么释放内存

问题描述 本人初次有Java调用dll,但是用jna调用dll,内存怎么处理Jna调用dll文件,怎么释放内存,最好有代码

python引用DLL文件的方法

  本文实例讲述了python引用DLL文件的方法.分享给大家供大家参考.具体分析如下: 在python中调用dll文件中的接口比较简单,如我们有一个test.dll文件,内部定义如下: ? 1 2 3 4 5 6 7 extern "C" { int __stdcall test( void* p, int len) { return len; } } 在python中我们可以用以下两种方式载入 1. ? 1 2 import ctypes dll = ctypes.windll.L

C#程序实现动态调用DLL的研究

原文:C#程序实现动态调用DLL的研究 C#程序实现动态调用DLL的研究 摘  要:在<csdn开发高手>2004年第03期中的<化功大法--将DLL嵌入EXE>一文,介绍了如何把一个动态链接库作为一个资源嵌入到可执行文件,在可执行文件运行时,自动从资源中释放出来,通过静态加载延迟实现DLL函数的动态加载,程序退出后实现临时文件的自动删除,从而为解决"DLL Hell"提供了一种解决方案.这是一个很好的设计思想,而且该作者也用C++实现了,在Internet上也

Python调用C/C++动态链接库的方法详解_python

本文以实例讲解了Python调用C/C++ DLL动态链接库的方法,具体示例如下: 示例一: 首先,在创建一个DLL工程(本例创建环境为VS 2005),头文件: //hello.h #ifdef EXPORT_HELLO_DLL #define HELLO_API __declspec(dllexport) #else #define HELLO_API __declspec(dllimport) #endif extern "C" { HELLO_API int IntAdd(in

python调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件_python

本文实例讲述python调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件的方法,该程序采用python 2.7编写.主要内容如下: 经过长期搜寻,终于找到了Moxa PCOMM Lite.调用PCOMM.DLL可以非常方便的通过串口的Xmodem.Ymodem.Zmodem等协议传输文件,而无需重复制造轮子. PCOMM Lite 1.6适用于win7等系统,做为dll文件可以采用任何支持调用dll的编程语言例如VC++.VB.Qt等等编写应用程序,点此本站下载 以下是发送