swig没有任何关于基类'std :: string'的知识,被忽略了

时间:2013-12-16 02:55:14

标签: c++ ruby swig

我正在尝试使用swig在c ++库周围构建ruby包装器。 大部分似乎都有效,但我有一个问题,我很确定与上述警告有关。

看起来我正在包装的类之一继承自std :: string。

我在运行swig时看到上面的警告信息。

当我在ruby中的一个对象上调用一个应该返回一个字符串的方法时,我看到了这个

SWIG :: Type_p_std__string:0X .....

我想我需要一些如何解决上述警告,以便工作,任何想法?

2 个答案:

答案 0 :(得分:5)

SWIG抱怨它不知道std :: string类,所以不能为它生成代码。

SWIG库std_string.i具有特定于语言的代码,用于将c ++字符串映射到目标语言字符串类。在生成类的代码之前添加%include "std_string.i" 应修复错误。

请注意,%include与swig接口文件中的#include不同。

答案 1 :(得分:5)

每当你在SWIG输出中看到SWIG :: Type_p_std__string或类似的神秘类型时,就意味着缺少一个类型图。在这里,SWIG需要导出std :: string。通常这是因为它在函数调用参数中使用或作为导出函数的返回值使用;在你的情况下,这是因为std :: string是一个基类。 SWIG包含常用STL类(如字符串和向量)的字体图“库”,您只需通过%include指令导入它。有关SWIG附带的其他.i,请参阅http://www.swig.org/Doc2.0/Library.html