【发布时间】:2012-07-30 06:25:29
【问题描述】:
我有一个奇怪的问题。
我正在开发一个使用 C 编写的共享库和一个使用 C++ 编写的 GUI 应用程序。 GUI 应用程序使用共享库。这个共享库使用 SQLite 合并和静态链接。 GUI 也将 SQLite 用于某些配置目的。它也是静态链接的。他们都使用最新的 SQLite 版本。
我的共享库使用FTS4。我通过在编译共享库时提供编译时间选项来启用 FTS4。一切都适用于共享库。我在共享库代码库中的所有测试都通过了。
当我开始在 GUI 程序中使用它时会出现问题。我收到类似Unknown module FTS4 的错误。这很奇怪,因为我将它静态链接到我的共享库中,而这个 GUI 程序所做的只是动态链接到我的库。当我将 FTS 编译选项设置为 GUI 程序时,错误消失并且一切正常。
总之,
libfoo.so - 静态链接 SQLite 并打开 FTS4 选项
foo - 在没有任何特殊编译时选项的情况下静态链接 SQLIte。动态链接到libfoo。
我不确定为什么会这样。任何帮助都会很棒!
【问题讨论】:
-
没有编译/链接器错误。它在运行时加载不正确的函数版本。它总是从
foo加载 SQLIte 函数。
标签: c++ c sqlite shared-libraries static-libraries