swig / c ++ - 为什么要继续抱怨未定义的符号

时间:2015-12-28 19:06:19

标签: c++ swig

我正在使用SWIG 3.0.7。

我有以下简单的c ++文件:

myif.h

class If
{
    public:
        const std::string str() const;

        If(const char *str);

    private:
        std::string m_str;
};



myif.c

#include "myif.h"

const std::string
If::get_str() const
{
    return m_str;
}

If::If(const char *str)
{
    m_str = str;
}

这是swig接口文件:

myif.i

%module myif

%{
    #include "myif.h"
%}

%include "stl.i"
%include "myif.h"

以下是构建所有内容的命令:

$PATH={swig_path}/bin swig -c++ -tcl myif.i
g++  -fPIC -c myif_wrap.cxx
g++ -shared myif_wrap.o -o myif_wrap.so

没有错误/警告。但是当我加载库时,在tclsh中,我收到以下错误:

% load ./myif_wrap.so
couldn't load file "./myif_wrap.so": ./myif_wrap.so: undefined symbol: _ZNK2If3strEv

它是说我需要链接STL库吗?但不知道该怎么做。

[编辑]是的,我的不好,函数名称错了,我应该调用C ++调用C ++之前在C ++中加载库之前确保一切正常; .i文件中的模块名称也需要与库名匹配。

0 个答案:

没有答案