Сделать библиотеку Xlib для Python - PullRequest
0 голосов
/ 20 сентября 2018

Я хочу создать библиотеку python на основе Xlib и скомпилировать ее с помощью SWIG.

Текущий код (C ++):

#include "SXG-H.h"
using namespace std;
int SXG::Init(int Events){
    SXG::d = XOpenDisplay(NULL);
    if (SXG::d==NULL){
        cerr << "DisplayError: Display unable to open";
        return 0;
    }
    SXG::s = DefaultScreen(d);
    return 1;
}
void SXG::CreateWindow(int width, int height){
    SXG::w = XCreateSimpleWindow(d, RootWindow(d,s), 
                                 100, 100, 
                                 width, height,
                                 1, 
                                 BlackPixel(SXG::d,SXG::s), 
                                 WhitePixel(SXG::d,SXG::s));
    XMapWindow(SXG::d,SXG::w);
}

Текущий код (заголовок C ++):

#include <X11/Xlib.h>
#include <X11/Xatom.h>
#include <iostream>
#include <string>
#ifndef SXG_H
#define SXG_H
using namespace std;
class SXG{
Display *d = XOpenDisplay(0);
    Window w;
    XEvent e;
    int s;
    int Init(int Events=0);
    void CreateWindow(int width=100, int height=100);
};
#endif

SWIG-файл:

%module SXG
%{
    #include "SXG-H.h"
%}
%include "SXG-H.h"

Вот как я это сделал:

$swig -python -c++ SXG.i
$g++ -c SXG.cpp SXG_wrap.cxx
$ld -shared SXG.o SXG_wrap.o -o SXG.so

Но это дает мне «неопределенную ссылку» ошибки при соединении, не уверен, что это SWIGили нет.

...