Fehler bei swig: undefined Symbol: _ZN7hosters11hostersLink7getLinkEi
-
22-09-2019 - |
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 -lhtmlcxxpkg-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.
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:
- Löschen Sie die
std::string getLink(int n);
Methode, da es nicht definiert ist. - Fügen Sie eine Definition für
std::string getLink(int n) { ... }