将SQLite链接到DLL的LNK2019错误(未解析的外部符号)

时间:2015-03-14 17:18:02

标签: c++ sqlite dll linker-errors

我正在制作一个需要SQLite的C ++ DLL。

我已经集成了SQLite头文件(sqlite3.h)并在外部依赖项中添加了库。我没有语法错误,但是当我尝试编译项目时,我得到以下LNK2019(“函数引用的未解析的外部符号[XYZ] ...”)错误:

  

error LNK2019: symbole externe non résolu sqlite3_close référencé dans la fonction "void __cdecl DisonnectDB(bool,struct sqlite3 *)" (?DisonnectDB@@YAX_NPEAUsqlite3@@@Z) C:\Users\Akash\Downloads\Learn Curve\Freelance\Travis\sana\Sana\Sana.obj Sana

     

error LNK2019: symbole externe non résolu sqlite3_column_text référencé dans la fonction "wchar_t const * __cdecl getTableData(struct sqlite3 *)" (?getTableData@@YAPEB_WPEAUsqlite3@@@Z) C:\Users\Akash\Downloads\Learn Curve\Freelance\Travis\sana\Sana\Sana.obj Sana

我尝试在测试控制台应用程序中执行相同的过程,并且我能够编译时没有错误,所以我确信问题不在于SQLite库或头文件的可见性。

Stack Overflow上的其他问题并不特定于DLL如何与静态库交互。

在DLL中使用SQLite库是否需要任何其他配置,而不是在控制台应用程序中使用? 如何修复编译时LNK2019错误?

1 个答案:

答案 0 :(得分:5)

经过广泛的测试后,我终于找到了这个问题的共鸣。 LNK2019错误可能是由与编译dll不同的静态库引起的。

我在x64中编译dll,而sqlite .lib文件是x86。

使用正确的架构编译后,我不再有链接器错误。