【问题标题】:Strange LNK2001 linker error奇怪的 LNK2001 链接器错误
【发布时间】:2012-02-03 09:31:02
【问题描述】:

昨天我收到了这个链接器错误。我在 google 和 msdn 上搜索过,但没有成功。 我的问题: 我已将我的 cpp 项目的某些部分移动到外部静态库中。我将 h 文件添加到我的主项目中,并将依赖项添加到 lib 文件中。不幸的是,我收到了很多链接器错误。

1>Compressor.obj : error LNK2001: unresolved external symbol "public: bool __thiscall NWindows::NFile::NFind::CFileInfo::Find(unsigned short const *)" (?Find@CFileInfo@NFind@NFile@NWindows@@QAE_NPBG@Z)
1>Compressor.obj : error LNK2001: unresolved external symbol "public: class NWindows::NCOM::CPropVariant & __thiscall NWindows::NCOM::CPropVariant::operator=(unsigned short const *)" (??4CPropVariant@NCOM@NWindows@@QAEAAV012@PBG@Z)
1>Compressor.obj : error LNK2001: unresolved external symbol "public: bool __thiscall CInFileStream::Open(unsigned short const *)" (?Open@CInFileStream@@QAE_NPBG@Z)
1>Compressor.obj : error LNK2001: unresolved external symbol "public: bool __thiscall NWindows::NFile::NIO::COutFile::Create(unsigned short const *,bool)" (?Create@COutFile@NIO@NFile@NWindows@@QAE_NPBG_N@Z)
1>Compressor.obj : error LNK2001: unresolved external symbol "void __cdecl ConvertUInt32ToString(unsigned int,unsigned short *)" (?ConvertUInt32ToString@@YAXIPAG@Z)
1>Compressor.obj : error LNK2001: unresolved external symbol "public: bool __thiscall NWindows::NDLL::CLibrary::Load(unsigned short const *)" (?Load@CLibrary@NDLL@NWindows@@QAE_NPBG@Z)

所有这些方法都是我的外部库的一部分。我尝试了很多编译器设置但没有成功。 此外,当我从链接器中完全删除 lib 依赖项时,我得到 26 LNK2001 错误。所以链接器只找到库的“部分”。 我是否为我的项目使用了错误的编译器/链接器选项?

编辑: 问题是方法 CLibrary::Load(LPCTSTR fileName) 的参数定义 LPCTSTR。在我的库中,我将选项“将 wchar_t 视为内置类型 (Properties->C/C++->Lanuage-> ... ) 设置为否。现在它可以工作了。

【问题讨论】:

  • 您是否在这些函数的头文件定义中遗漏了一个外部“C”?
  • extern "C" 可能不会成为错误消息中的班级成员的问题(operator= 等人)

标签: c++ linker


【解决方案1】:

问题中没有足够的信息,所以我的回答仅供参考。

获取一个函数,例如bool NWindows::NFile::NFind::CFileInfo::Find(unsigned short const *),并在您的代码中找到它的定义。它在那里吗?有了这个确切的函数签名?它在未命名的命名空间中吗?它在源文件中声明为静态吗?

另外,尝试完全重建所有内容。您会惊讶于完全重建有多少次让神秘问题消失。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-30
    • 1970-01-01
    • 1970-01-01
    • 2013-03-17
    • 2014-04-27
    • 2016-07-09
    相关资源
    最近更新 更多