Question

Je suis en train de faire un python contraignant pour la cette bibliothèque:

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

J'utilise rasade, est Heres le code:

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

Je lance

  

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

et je compilez avec

  

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

Mais quand je lance python et je l'importer, je reçois:

>>> 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

Comment puis-je résoudre cela?

Merci.

Était-ce utile?

La solution

C'est le nom de mutilée:

hosters::hostersLink::getLink(int)

Assurez-vous que vous avez défini cette fonction.

D'accord, j'ai regardé de plus près Hébergeurs 0,6. Les fichiers d'en-tête de deux méthodes déclare getLink:

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

Mais le fichier source déclare que le premier:

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

Mais SWIG crée des enveloppes pour ces deux fonctions qui se visse les choses. Je recommande de faire une des deux choses:

  1. Supprimer la méthode std::string getLink(int n); comme il est défini.
  2. Ajouter une définition pour std::string getLink(int n) { ... }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top