C GUI,带有 C++ 骨干?
我有一个用 C++ 编写的简单(也很琐碎)的银行应用程序。 我在 ubuntu 上,所以我使用 GNOME (GTK+)。 我想知道是否可以用 C/GTK+ 编写所有 GUI,然后以某种方式将其链接到我的 C++ 代码。 这可能吗?
注意:我不想使用 Qt 或 GTKmm,因此请不要提供这些作为答案。
I have a simple (and also trivial) banking application that I wrote in C++. I'm on ubuntu so I'm using GNOME (GTK+). I was wondering if I could write all my GUI in C/GTK+ and then somehow link it to my C++ code. Is this even possible?
Note: I don't want to use Qt or GTKmm, so please don't offer those as answers.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
是的,这是一件非常容易做的事情。 您所要做的就是将一些 C++ 函数公开为“extern C”,以便 UI 代码中的事件处理程序和回调可以调用它们。
如果您无法更改现有的 C++ 源代码 - 没问题。 只需为您的 UI 编写一个 C++ shim,extern 这些函数,然后从那里调用后端函数。
Yes, it's a very easy thing to do. All you have to do is expose some of the C++ functions as "extern C" so that the event handlers and callbacks in your UI code can call them.
In the case that you can't change the existing C++ source - no problem. just write a C++ shim for your UI, extern those functions, and call backend functions from there.
我不明白为什么不,使用适当的 extern "C" 用法,以便您的 C 代码可以调用 C++。 现在,当然,你可能会让自己变得更加困难,但从理论上讲这是合理的。
I don't see why not, with appropriate extern "C" usage so your C code can call into C++. Now, granted, you're probably making it a bit harder on yourself, but it's theoretically sound.
就像其他人建议的那样,您可以为 C++ 库编写一个 C 包装器。 但你也可以用 C++ 编写前端,即使你只使用 C 子集。 如果您不喜欢语言混合,我可以理解,但这是最简单的方法,因为您可以节省编写包装器的时间。
Like others propose you can write a C wrapper for your C++ library. But you can also write the front-end in C++, even if you only use the C subset. I can understand if you don't like the language mixing, but it is the easiest way, because you save the time to write the wrapper.
使用 wxWidgets 怎么样?
How about using wxWidgets instead?
您可以将 GTK/C 代码编译为 C++,而不使用 GTKmm,并在本机使用 C++ 代码。
大多数健全的 C 库都可以从本机 C++ 代码中使用,而 GTK+ 本质上是一个 C 库。
You can just compile your GTK/C code as C++ without using GTKmm, and use the C++ code natively.
Most sane C libraries can be used from native C++ code, and GTK+ is fundamentaly a C library.