0

我按照这里的说明创建了一个 Qt 静态库:http: //qt-project.org/wiki/How_to_create_a_library_with_Qt_and_use_it_in_an_application

然后我尝试将库与我自己的(非 Qt)应用程序链接,并且 GCC 抱怨未定义的引用。使用 Linux 实用程序检查库内容,nm我发现我打算调用的函数在其前后添加了神秘字母。

更仔细地阅读指令链接中的指令,它表明我需要使用导入定义,以便可以调用正确的 Qt 宏来导入函数(我假设重命名函数以匹配库中的命名方案)。但我真的不想在我的主应用程序中引入 Qt 依赖项。

我真正想做的是用 Qt 构建一个 UI 前端库,我的主应用程序将简单地链接到它而没有任何 Qt 依赖项。这可能吗?还是我无意中使用了 Qt?

谢谢。

4

1 回答 1

0

听起来您正在遇到 C++ 命名空间重整。尝试在您的库导出周围添加一个“extern "C" {}' 块。

QLibrary::resolve 函数的主要目的是提供一个抽象层,因此您不必担心解析符号的 win32 命令或 linux 命令。不必使用用 Qt 创建的库。

于 2013-03-04T04:10:08.490 回答