swig 对基类 'std::string' 一无所知,被忽略

swig Nothing known about base class 'std::string', ignored

本文关键字:一无所知 std 基类 swig string      更新时间:2023-10-16

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

看起来我正在包装的一个类是从std::string继承的。

当我跑步时,我看到了上面的警告信息。

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

SWIG::类型_p_std_string:0x。。。。。

我在想我需要一些如何修复上述警告才能工作,有什么想法吗?

SWIG抱怨它不知道std::string类,因此无法为它生成代码。

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

注意,在swig接口文件中,%include#include不同。

每当您在SWIG输出中看到SWIG::Type_p_std_string或类似的隐式类型时,就意味着缺少类型映射。这里,SWIG需要导出std::string。通常情况下,这是因为它用于函数调用参数中,或者用作正在导出的函数中的返回值;在您的情况下,这是因为std::string是一个基类。SWIG包含一个常用STL类(如字符串和向量)的类型映射"库",您只需通过%include指令导入即可。看见http://www.swig.org/Doc2.0/Library.html用于SWIG中包含的其他.i。