C++ 未解析的符号

标签 c++ compiler-construction linker unresolved-external

我只是不明白我哪里做错了。 编译器提示

Error   215 error LNK2001: Unresolved external symbol ""class std::vector<class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> >,class std::allocator<class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > > > __cdecl splitW(class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > &,class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > const &)" (?splitW@@YA?AV?$vector@V?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@V?$allocator@V?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@2@@std@@AAV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@ABV32@@Z)".   C:\voice\clsText.obj    voice

但是我看不出哪里出错了。有人可以告诉我如何分析此错误消息吗?我经常遇到这个问题,但我又一次不记得我是如何解决它的。

非常感谢!

这是我在 strhelper.cpp 中的代码:

vector<wstring> splitW(const wstring& uMain, const wstring &uSplitBy)
{
    vector<wstring>s;

    int iStart=0;

    for (;;)
    {
        int iPos=uMain.find(uSplitBy,iStart);
        if (iPos==-1)
        {
            wstring s1;
            s1 = uMain.substr(iStart,uMain.size() - iStart);
            if (s1.size()>0)
            {
                s.push_back(s1);
            }
            break;
        }
        else
        {
            wstring s2;
            s2 = uMain.substr(iStart,iPos-iStart);
            s.push_back(s2);
            iStart = iPos + 1;
        }
    }
    return s;
}

这是包含声明的 header 部分:

void replaceOnce(wstring& uText,const wstring& uSearchFor,const wstring& uReplaceWith,bool uTextCompare);
vector<wstring> splitW(wstring &str, const wstring &uSep);
vector<wstring> splitAToWVec(const string& uMain, const string& uSplitBy);
vector<string> splitAToAVec(const string& uMain, const string& uSplitBy);

最佳答案

splitW()的第一个参数的类型在头文件中声明为wstring&,但在源代码中定义为const wstring&。请使它们保持一致。

关于C++ 未解析的符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21514011/

相关文章:

c++ - Android NDK链接V8静态库: cannot find symbols,但它们在那里

c++ - 定义命名空间作用域函数

compiler-construction - 无法编译 C++ 项目(宏 "max"传递了 3 个参数,但只需要 2 个)

c++ - 两条线之间的内角

c++ - NURBS 和 opengl 4.2 内核怎么样?

c++ - 如何在编译时将组合文字常量转换为 wchar?

c# - 为什么 null == false 在 c# 中不会导致编译错误?

scala - 如何从编译器插件中找到 Scala 程序中的语句?

android-ndk - 使用 Android NDK 对 libssl 函数的 undefined reference

c++ - Windows/C++中是否有 'restart'函数