Att*_*lah 14 c++ linker static-libraries visual-c++
我有这个我正在研究的MFC应用程序需要有一个嵌入式数据库.所以我去寻找一个光滑,快速的"可嵌入"数据库,并且偶然发现了SQLite.
我用它创建了一个数据库,然后用Visual Studio 2008创建了一个静态库项目.库项目将用于另一个主项目.
在库项目中,我DBClass用方法创建了一个类AddFeedToDB(CFeed f).库项目使用.libcodeproject(cppsqlite3.lib)中的文件.
编译静态库时,没有检测到错误,但是当我尝试在主项目中使用库项目文件时,我得到以下类型的错误:
error LNK2019: unresolved external symbol "public:void __thiscall
CppSQLite3DB::close(void)" (?close@CppSQLite3DB@@QAEXXZ
referenced in function "public: int __thiscall
CTalkingFeedsDB::AddFeedToDB(class CFeed,char const*)" (?
AddFeedToDB@CTalkingFeedsDB@@QAEHVCFeed@@PDB@Z
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
小智 15
我知道这个问题已经有2年了...但我在这里遇到了同样的情况.添加了所有头文件...添加了lib目录..并继续出现此错误.所以我手动将lib添加到配置属性 - >链接器 - >输入 - >有条件的依赖关系,这一切都适合我.
它发生在我身上不止一次,我认为符号XXX(即?close@CppSQLite3DB@@QAEXXZ)是在导入库,而实际符号为__impXXX(即__imp?close@CppSQLite3DB@@QAEXXZ).
然后在编译步骤中找到链接器错误的原因:编译器将生成?close@CppSQLite3DB@@QAEXXZ要导入的符号,它应该在哪里生成__imp?close@CppSQLite3DB@@QAEXXZ.这通常意味着函数声明本身没有__declspec( dllimport ).这可能是由某些预处理器符号未定义引起的.或者__declspec根本不存在......