【发布时间】:2012-06-13 14:30:17
【问题描述】:
我遇到了一个令人讨厌的链接器错误的问题,希望能找到解决方法的提示。
我理解错误的方式是,链接器无法在“BFStream”类中找到名为“read”的函数的实现。该代码包括 BFStream 类的标头。有一个导入库 QRFound.lib,它接收来自 QRFound.dll 的导出函数。 dll 和 lib 都在文件系统的 lib 目录中。 lib 目录在项目属性中的两个位置提供:VC++ Directories->Library Directories 和 Linker->Additional Library Directories。 QRFound.lib 在 Linker->Input->Additional Dependencies 中指定,并且在列表的第一位。
我知道 QRFound.dll 包含 BFStream::read 的实现,因为我使用依赖项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)
【问题讨论】:
-
QRFound.dll 的出处是什么?可能是它是用不同的 C++ 编译器构建的,一般来说,从 DLL 导出 C++ 接口是一个糟糕的主意:坚持使用 C 接口或改用 COM。
标签: c++ visual-studio-2010 visual-studio-2008 dll