我有一些现有的C代码需要在Python中使用。我可以使用以下命令加载库:
library_path = '/full/path/to/my/library.dylib'
lib1 = cdll.LoadLibrary(library_path)
问题是我需要多个实例化这个库,例如:
lib2 = cdll.LoadLibrary(library_path)
这将创建第二个实例,但两者似乎具有相同的内存位置(句柄相同)。我已尝试将library.dylib复制并重命名为library1.dylib和library2.dylib,但这不会改变它们的加载方式。问题在于当我调用lib1中的函数时,lib2中的全局和状态变量被修改。例如:
lib1.open('/path/to/myfile') # open a file for processing
lib1.run() # This will do something with the file
lib2.open('/path/to/anotherfile') # open a file for processing
lib2.run() # This will do something with the file
lib1.close() # Closes library 1
lib2.run() # This fails because lib1.close() also closes lib2
有没有办法以一种使这些库实例保持“封闭”的方式加载它们?我正在尝试加载的C代码是非常庞大的遗留软件...我需要进行一些改写吗?这是我找到的一个解决类似问题的链接,但并没有帮助我太多:http://www.gossamer-threads.com/lists/python/python/826703
非常感谢任何帮助。