链接静态Qt库到c程序

Link static Qt library to c program

本文关键字:程序 库到 Qt 静态 链接      更新时间:2023-10-16

我需要链接到一个库(我自己用Qt写的)。当然,这会产生(不管extern "C"和名称混淆的东西)在链接期间,由于c++的依赖(stdc++ Qt)很多错误。

所以我有一个想法,但我不确定,如果我错过了什么,或者如果方法是一个现实的解决方案:

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

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

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

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

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

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

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

根据你提到的成为Digia的商业客户是一个问题的评论,我想说不。

静态链接不能发生在专有软件上,根据你的评论,你的项目不是开源的。

也就是说,你似乎无论如何都有自己的包装器,而且Qt对给定的主要版本保持二进制兼容性,其生命周期通常是几年,所以我个人倾向于动态链接和某种绑定。