【发布时间】:2010-12-16 06:10:04
【问题描述】:
我在网上找到了相互矛盾的答案——有人说有,有人说没有。我也无法在官方 Qt 文档中找到任何详细信息。 Qt 有没有 C 绑定?
【问题讨论】:
我在网上找到了相互矛盾的答案——有人说有,有人说没有。我也无法在官方 Qt 文档中找到任何详细信息。 Qt 有没有 C 绑定?
【问题讨论】:
Qt 使用元对象编译器 (MOC) 来使信号和槽神奇地工作(例如,根据用户信号和槽定义进行函数回调)。所以 Qt 并不是真正的 C++,而是真正的 Qt 自己的语法,它很像 C++,但有信号和槽。这使得‘外部“c”’变得无用。
【讨论】:
以前有个叫QtC的Binding,但是搜索发现this thread:
来自理查德·戴尔:
我曾经维护 Objective-C 和 Qt# 绑定使用的 C 绑定。 但是 Smoke 库要好得多,虽然它不是 C 绑定,而且我 废弃了 QtC 绑定,改为使用烟雾。
Smoke is here。尽管我记得听说过它们,但我一直无法在任何地方找到明确的 QtC 绑定参考。
【讨论】:
简短回答:不。
如果您需要一个全面的 C 图形 GUI 工具包,您可以使用 GTK+。
要使用 Qt,您必须拥有 C++ 编译器。但这并不意味着您的“应用程序逻辑”不能用 C 语言编写,不能用 C 编译器编译并仔细链接到 C++ 部分(带有 Qt 的 GUI)。此应用程序逻辑可以是通用的,可链接到其他可执行文件(纯 C、混合 C/C++ 等)。这完全取决于您的需要。
不过,Qt 非常适合 C++,这是决定将 C++ 用于特定项目的一个很好的理由,即使您仍希望将部分内容保留在 C 中。
【讨论】:
很遗憾不是,但您可以将您的程序塑造为一组实现业务逻辑的库并用 C 语言编写它们,然后您可以使用一点 C++ 将您编写为库的内容与使用 QT 的 GUI 绑定。
这也是一个很好的方法,因为以后您可以重用您的库并使用不同的工具包或语言实现许多其他前端!
【讨论】:
你总是可以使用一个简单地将 C++ 转换为 C 的 C++ 编译器,然后调用它生成的错误名称,等等。:-)
【讨论】:
extern "C" 语句,尤其是当它编译为 C 源代码时。 (顺便说一句,哪个 C++ 编译器可以生成 C 代码?)
没有。 Qt 是 C++。但是您可以在任何不交互/创建 GUI 元素的地方编写 C 样式代码,然后使用您选择的 C++ 编译器编译整个代码。
【讨论】:
我认为不会。 Qt 总是被描述为“类库”,它需要 C++ 编译器来构建。您可以尝试编写/找到一个 DLL/接口,该 DLL/接口将围绕 QT 并为 C 层提供 API。
【讨论】: