swig错误:未定义符号:_ZN7hosters11hostersLink7getLinkEi

时间:2010-03-24 22:00:04

标签: c++ swig undefined-symbol

我正在尝试为这个库创建一个python绑定:

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

我正在使用swig,heres是代码:

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

我跑

  

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

我用

编译
  

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

但是当我运行python并导入它时,我得到:

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

我该如何解决?

感谢。

1 个答案:

答案 0 :(得分:5)

这是错误的名称:

hosters::hostersLink::getLink(int)

确保您已定义该功能。

好的,我仔细看了0.6的主持人。头文件声明了两个getLink方法:

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

但源文件只声明了第一个:

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

但是,SWIG正在为这两个功能创建包装器。我建议做以下两件事之一:

  1. 删除std::string getLink(int n);方法,因为它未定义。
  2. 添加std::string getLink(int n) { ... }
  3. 的定义