我正在尝试为这个库做一个 python 绑定(bind):

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

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

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

我跑



我编译



但是当我运行 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

我该如何解决?

谢谢。

最佳答案

那是以下的乱七八糟的名字:

hosters::hostersLink::getLink(int)

确保您已定义该函数。

好的,我仔细研究了hosters 0.6。头文件声明了两个 getLink 方法:
std::string getLink(void);
std::string getLink(int n);

但是源文件只声明了第一个:
std::string hostersLink::getLink(void) {return Link;}

但是 SWIG 正在为这两个函数创建包装器,这把事情搞砸了。我建议做以下两件事之一:
  • 删除未定义的 std::string getLink(int n); 方法。
  • std::string getLink(int n) { ... }
  • 添加定义

    关于c++ - swig : undefined symbol: _ZN7hosters11hostersLink7getLinkEi 出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2511724/

    10-12 22:12