由于指针大小的差异有关,不可能在64位进程中加载32位共享库(例如,.dll,.so,.dylib文件),反之亦然。故经常会碰到一个问题,Python解释器是64位的,但是dll库是32位的,无法通过CDLL方法直接调用32位dll库中的函数。 本文展示了一种使用msl-loadlib来实现64位Python解释器来调用32位动态链接库的方法。 此包包含一个承载 32 位库的 Server32 类和一个 Client64 类,该类向服务器发送请求以作为进程间通信的一种形式与 32 位库进行通信。 mydll.dll文件是一个32位C++库,不能从64位Python解释器中运行的模块加载。该库由在32位进程中运行的MyServer类加载。MyServer在指定的主机地址和端口号上托管库。作为Server32子类的任何类都必须在其构造函数中提供两个参数:主机和端口。在构造函数中包含关键字参数是可选的。 ############################################################################# server端代码
#msl_server.py
from msl.loadlib import Server32 import traceback class MyServer(Server32): def __init__(self, host, port, quiet, **kwargs): try: super(MyServer, self).__init__(path ='mydll', libtype = 'cdll', host = host, port = port, quiet = quiet) self.lib.Init() except Exception: tr