2009-11-13 40 views
49

我在网上发现了相互矛盾的答案 - 有人说这样做,有人说没有。我无法在官方Qt文档中找到任何细节。那么Qt是否有C绑定?Qt是否有C接口?

回答

49

简答:没有。

如果您需要C的全面GUI工具包,则可以使用GTK +。

使用Qt,您必须有一个C++编译器。但这并不意味着你的“应用逻辑”不能用C编写,用C编译器编译并仔细链接到C++部分(带Qt的GUI)。这个应用程序逻辑可以是通用的,可以链接到其他可执行文件(纯C,混合C/C++等)。这一切都取决于你需要什么。

Qt是伟大的C++,虽然,这是一个很好的理由使用C++为特定的项目来决定,即使你仍想保留的部分在C.

3

我不这么认为。 Qt总是被描述为“类库”,它需要编译C++编译器。您可以尝试编写/查找将环绕QT并向C层提供API的DLL /接口。

15

编号Qt是C++。但是你可以在任何地方编写C风格的代码,这些代码不会交互/创建GUI元素,并且可以用你选择的C++编译器编译整个代码。

10

曾经有一个绑定名为QTC,但寻找它揭示了this thread

从理查德·戴尔:

我用来维护被使用的Objective-C和Qt#绑定是C绑定。 但是,Smoke库虽然不是C绑定,但它更好,并且我废弃了QtC绑定以使用烟雾。

Smoke is here。我一直无法在任何地方找到清楚的QtC绑定参考,尽管我记得听说过它们。

3

你总是可以使用C++编译器,简单地说C++到C,然后调用它产生错位的名称,等等:-)

+0

...不好的想法:当你使用不同的编译器时,你可能会发现这个名字是不同的。或者有没有一个明星可以捣毁? – Dacav 2010-07-13 07:29:00

+1

如果您只是将C++代码(Qt)“编译”为C,那么您可以将生成的C代码视为“源代码”。除非您重新生成它,否则用于生成它的编译器不再相关。也就是说,这个答案并不打算过于严肃,但我相信这是一个正确的答案。 – 2010-07-13 07:59:07

+0

为什么使用错位的名字?每一个合理的C++编译器都应该理解'extern“C”'语句,尤其是当它编译为C源代码时。 (Btw,哪个C++编译器可以发出C代码?) – schoppenhauer 2014-12-25 14:12:49

17

不幸的是没有,但你可以塑造你的程序作为库的集合achiving您业务逻辑并用C语言编写它们,那么你可以使用一个小C++来将你使用QT编写的库与使用QT的GUI进行绑定。

这也是一种很好的方法,因为之后您可以重复使用库并使用不同的工具包或语言实现许多其他前端!

-1

Qt使用元对象编译器(MOC)使信号和时隙的魔法工作(例如,基于用户信号和插槽定义进行函数回调)。所以Qt并不是真正的C++,而是Qt自己的语法,它很像C++,但是带有信号和插槽。这使得'外部'c''无用。