c++ - 需要帮助解决链接器错误 LNK2001 visual studio 2010

标签 c++ visual-studio-2010 visual-studio-2008 dll

我遇到了一个讨厌的链接器错误问题,希望能提供找到解决方案的提示。

根据我对错误的理解,链接器无法在“BFStream”类中找到名为“read”的函数的实现。该代码包含类 BFStream 的 header 。有一个导入库 QRFound.lib,它接收从 QRFound.dll 导出的函数。 dll 和 lib 都在文件系统的 lib 目录中。 lib 目录在项目属性中的两个位置提供:VC++ 目录-> 库目录和链接器-> 附加库目录。 QRFound.lib 在 Linker->Input->Additional Dependencies 中指定,并且位于列表的第一位。

我知道 QRFound.dll 包含 BFStream::read 的实现,因为我使用 dependency walker 来查看它。但是 C++ 修饰与让我怀疑的链接器错误略有不同:?read@BFStream@@QAE_NPADH@Z

链接器错误是:

1>     Creating library C:\MyProj\Debug\MyDisplay.lib and object C:\MyProj\Debug\MyDisplay.exp
1>MyCmdReceiver.obj : error LNK2001: unresolved external symbol "public: bool __thiscall BFStream::read(char *,__int64)" (?read@BFStream@@QAE_NPAD_J@Z)

最佳答案

在您的符号上运行 undname.exe 实用程序会产生:

Undecoration of :- "?read@BFStream@@QAE_NPADH@Z"
is :- "public: bool __thiscall BFStream::read(char *,int)"

所以,是的,显然最后一个参数不匹配,__int64int 不匹配。您没有发布该方法的实际声明,因此我无法准确猜测这种不匹配是如何发生的。我怀疑这是某种宏汤问题。

关于c++ - 需要帮助解决链接器错误 LNK2001 visual studio 2010,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11017108/

相关文章:

c++ - 与主执行模块和动态库的 2 种方式通信

c++ - 使用 Crypto++ 的 LUC 算法示例

javascript - 打开 JavaScript 文件时 Visual Studio 2008 崩溃?

visual-studio-2010 - 像在 AfterBuild 中一样实现 BeforePublish

c# - IDE 下划线自定义属性

c++ - Visual Studio /子系统 :POSIX not appearing in 2008

c++ - 低于 4.5 的 OpenGL 版本的 glBindTextureUnit 的替代方案?

c++ - VS 社区 2013 : cannot open include file 'winres.h'

android - .axml 突出显示和智能感知在 monodroid 中不起作用

c++ - 从 Visual Studio 启动应用程序时出现页面错误