简体   繁体   中英

python dll swig help

First, I have never used SWIG, I dont know what it does...

We have a python library, that as far as I can tell uses SWIG, say when I want to use this library I have to put this in my python code:

import pylib

Now if I go open this vendor's pylib.py I see some classes, functions and this header:

# This file was automatically generated by SWIG (http://www.swig.org).
# Version 1.3.33
#
# Don't modify this file, modify the SWIG interface instead.
# This file is compatible with both classic and new-style classes.

import _pylib
import new
new_instancemethod = new.instancemethod

Next, in the same directory as pylib.py, there is a file called _pylib.pyd, that I think is a dll.

My problem is the following:

Many classes in pylib.py look like this:

class PersistentCache(_object):
    __swig_setmethods__ = {}
    __setattr__ = lambda self, name, value: _swig_setattr(self, PersistentCache, name, value)
    __swig_getmethods__ = {}
    __getattr__ = lambda self, name: _swig_getattr(self, PersistentCache, name)
    __repr__ = _swig_repr
    def __init__(self, *args): 
        this = _pylib.new_PersistentCache(*args)
        try: self.this.append(this)
        except: self.this = this
    __swig_destroy__ = _pylib.delete_PersistentCache
    __del__ = lambda self : None;
    def setProperty(*args): return _pylib.PersistentCache_setProperty(*args)
    def getProperty(*args): return _pylib.PersistentCache_getProperty(*args)
    def clear(*args): return _pylib.PersistentCache_clear(*args)
    def entries(*args): return _pylib.PersistentCache_entries(*args)
PersistentCache_swigregister = _pylib.PersistentCache_swigregister
PersistentCache_swigregister(PersistentCache)

Say I want to use this class or it's methods, with things like:

 *args

as parameters, I cant know how many parameters I should pass nor what they should be, with what I have is it possible to find this out, so I can use the library?

SWIG is a method of automatically wrapping up a C/C++ library so it can be accessed from Python. The library is actually a C library compiled as a DLL. The Python code is just pass-through code, all autogenerated by SWIG, and you're right that it's not very helpful.

If you want to know what arguments to pass, you should not look at the Python code, you should look at the C code it was generated from -- if you have it, or the documentation if not. If you don't have any code or documentation for that library, then I think you're going to have a very difficult time figuring it out... you should contact the vendor for documentation.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM