【问题标题】:ODB C++ - Unknown database schema errorODB C++ - 未知的数据库架构错误
【发布时间】:2016-10-07 06:05:27
【问题描述】:

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

【问题讨论】:

  • 您是否尝试在 sqlite 中手动创建某些内容?也许你的 sqlite 链接在你的可执行文件中中断了
  • @Superlokkus:不,我没有手动创建任何东西。
  • 你误会我了:请尝试使用 sqlite 手动创建一些东西,以确保 sqlite 实际工作,并排除 ODB 没有做错的情况,因为无论如何你不能使用 sqlite .
  • @Superlokkus:当我将 odb 编译器生成的文件添加到可执行文件而不是库时,一切正常。所以 SQLITE 正在工作,对吧?
  • 不,例如尝试打开一个文件数据库,我不确定; sqlite3_open

标签: c++ database schema odb codesynthesis


【解决方案1】:

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

更多详情见:

【讨论】:

    猜你喜欢
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-17
    • 2011-10-09
    • 2014-02-01
    • 1970-01-01
    相关资源
    最近更新 更多