1 Востаннє редагувалося snake (12.04.2018 11:50:40)

Тема: python + c++

Думаю це більше в цю тему

Суть:
Є бібліотека  *.so, на с++ і мені треба викликати методи класу з c++ в python
Що в мене є:
хедер файл з наступним описом:

...
class XXXClient
{
public:
    XXXClient(){}
    virtual ~XXXClient(){}

    virtual int CommOpen(const char* sPort, unsigned int nBaudRate) = 0;
    ...
};

// Class factory "C" functions

typedef XXXClient* create_t();
typedef void destroy_t(XXXClient*);

і є приклад на с++

    ...
    void* lib = dlopen("XXXLib.so", RTLD_LAZY);
    if(!lib)
    {
        cout << "Cannot load library: " << dlerror() << endl;
        return 0;
    }

    //reset errors
    dlerror();

    //load the symbols
    create_t* creatXXXInstance = (create_t*) dlsym(lib, "create");
    const char* dlsym_error = dlerror();
    if(dlsym_error)
    {
        cout << "Cannot load symbol create: " << dlsym_error << endl;
        return 0;
    }

    destroy_t* destroyXXXInstance = (destroy_t*) dlsym(lib, "destroy");
    dlsym_error = dlerror();
    if(dlsym_error)
    {
        cout << "Cannot load symbol destroy: " << dlsym_error << endl;
        return 0;
    }

    //create an instance of GTBClient
    XXXClient* pXXXClient = creatXXXInstance();
    ...

Я зрозуміти не можу, як мені добитись того на python
Не можу зрозуміти, як працювати з вказівниками
На пайтоні вийшло наступне

lib = CDLL('XXXLib.so', os.RTLD_LAZY)
lib.create()

Метод create викликається, повертає int я так розумію, що це адреса, але як далі... Прості зв'язки з С в python робив, але тут вказівник на вказівнику і я не знаю, як мені це обробити, ще й до того ж С++, але інтерфейс то є.
Допоможіть підключити цю лібу в пайтон, щоб я міг працювати з методами классу.
Дякую