ODB c++ -未知的数据库模式错误

ODB C++ - Unknown database schema error

本文关键字:数据库 模式 错误 未知 c++ ODB      更新时间:2023-10-16

在我的Visual Studio解决方案中,我有两个不同的项目,其中一个作为static library构建,另一个作为可执行文件构建。ODB相关的代码,如创建数据库和所有的都在图书馆。我把这个库链接到我的可执行文件上。但是当我调试可执行代码时,我在调用create_schema()中得到错误"unknown database schema"。我使用SQLite作为我的数据库。我做错了什么?

这个问题可能与这里和这里描述的问题有关,并且可以简要总结如下:如果静态库中的符号未直接用于主二进制文件,则C/c++链接器将忽略这些符号。ODB的实现可能会落入这个陷阱,这取决于您如何精确地实例化生成的代码。对于GCC/Clang的解决方案是使用--whole-archive和MSVC,在Visual Studio 2015 Update 2及以上,/WHOLEARCHIVE .

查看详细信息:

  • ld链接器问题:——whole-archive选项
  • 什么是Microsoft Visual Studio相当于GCC的ld选项——whole-archive