Frage

Ich versuche, einen Python zu machen für die diese Bibliothek Bindung:

http://code.google.com/p/hosterslib/ .

Ich verwende swig, heres ist der Code:

%module pyhosters    
%{    
#include "hosters/hosters.hpp"    
%}    
%include "hosters/hosters.hpp"

Ich betreiben

  

swig -c ++ -python -o swig_wrap.cxx swig.i

und ich Kompilierung mit

  

g ++ -O2 -fPIC -shared -o _pyhosters.so swig_wrap.cxx python-config --libs --cflags -lhosters -lcln -lhtmlcxx pkg-config libglog --libs --cflags -I / usr / include / python2.6 -Wall -Wextra

Aber wenn ich Python laufen und ich importieren, erhalte ich:

>>> import pyhosters    
Traceback (most recent call last):    
  File "<input>", line 1, in <module>    
  File "./pyhosters.py", line 7, in <module>    
    import _pyhosters    
ImportError: ./_pyhosters.so: undefined symbol: _ZN7hosters11hostersLink7getLinkEi

Wie kann ich das lösen?

Danke.

War es hilfreich?

Lösung

Das ist der verstümmelten Name:

hosters::hostersLink::getLink(int)

Stellen Sie sicher, haben Sie festgelegt, dass Funktion.

Okay, ich nahm einen genaueren Blick auf Hostern 0,6. Die Header-Dateien deklariert zwei getLink Methoden:

std::string getLink(void);
std::string getLink(int n);

Aber die Quelldatei erklärt nur die erste:

std::string hostersLink::getLink(void) {return Link;}

Aber SWIG ist Wrapper für diese beiden Funktionen, die Schrauben Dinge zu schaffen. Ich empfehle, eines von zwei Dingen:

  1. Löschen Sie die std::string getLink(int n); Methode, da es nicht definiert ist.
  2. Fügen Sie eine Definition für std::string getLink(int n) { ... }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top