将静态Qt库链接到c程序

时间:2014-05-05 13:16:46

标签: c++ c qt gcc static-linking

我需要链接到一个库(我自己用Qt编写)。当然,由于C ++依赖性(stdc ++ Qt),这会在链接期间生成(无论extern "C"和名称修改的东西)很多错误。

所以我有了一个想法,但我不确定,如果我遗漏了某些东西,或者这种方法是否是一个现实的解决方案:

搜索关于此主题的一些提示,我找到了一篇关于building static Qt的文章。在没有详细阅读所有内容的情况下,我认为解决方案可能是静态编译Qt,然后将我的应用程序与Qt的静态版本链接起来。在我看来,由于以下原因,这应该会导致成功构建:

  1. 使用静态Qt库构建我的Qt库(再次作为静态库)将解析所有依赖项,因为它们都在静态lib存档中。

  2. 由于extern "C" d接口函数将由c应用程序访问,C编译器(和链接器)也将看到所有依赖项已解决,这里也没有问题。

  3. 现在在尝试静态构建Qt的耗尽步骤之前,我想知道,这种方法是否可以解决问题。

    编辑1: 替代解决方案是在应用程序的Qt和C部分之上实现服务器 - 客户端体系结构,并让它们以这种方式相互通信。

    编辑2: 可能最好的解决方案既不是两者都提到的。相反,我只是写了一个动态链接的边界(由Laszlo Papp和dsu建议),一切正常。

1 个答案:

答案 0 :(得分:4)

  

在尝试静态构建Qt之前,我想知道,这种方法是否可以解决问题。

基于你提到成为Digia的商业客户的评论是一个问题,我会说不。

使用专有软件不会发生静态链接,根据您的评论,您的项目不可开源。

话虽如此,无论如何你似乎都有自己的包装器,并且Qt保持了给定主要版本的二进制兼容性,其生命周期通常是几年,所以我个人会去动态链接和某种绑定。 / p>