Я хочу создать библиотеку 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или нет.