使用 Winelib 移植仅限 Windows 的 GUI 工具包
我喜欢 D 的 DFL GUI 工具包的所有内容,除了它只能在 Windows 上运行,因为它基本上是 Windows API 的一个漂亮的高级包装器。使用 Winelib 将这样的工具包简单地移植到 Linux(除了 Windows 和 Linux 之外,我并不真正关心任何其他操作系统)可能有多困难?如果我在 Linux 上编译这样一个库并将其与 Winelib 链接起来,它大部分“正常工作”的可能性有多大?可能涉及哪些非显而易见的步骤?
注意:对于那些不熟悉 D 处理 C 代码的方法的人,可以直接从 D 调用 C 代码。您只需将头文件翻译为 D(Win32 头文件已经这样做了,但 Winelib 头文件还没有这样做)我不确定 Winelib 头文件是否需要翻译,或者 Windows 头文件是否足够好。),使用 C 编译器编译 C 代码,然后链接 C 对象文件。
I love just about everything about the DFL GUI toolkit for D except that it only works on Windows because it's basically a pretty, high-level wrapper around the Windows API. How hard would it likely be to simply port such a toolkit to Linux (I don't really care about any other OS besides Windows and Linux) using Winelib? What are the odds that if I compiled such a library on Linux and linked it with Winelib it would mostly "just work"? What non-obvious steps might be involved?
Note: For those who are unfamiliar with D's methods of working with C code, C code can be called directly from D. You just need to translate the header file to D (this is already done for the Win32 headers, but not the Winelib headers. I'm not sure if the Winelib headers even need to be translated or if the Windows headers are good enough.), compile the C code with a C compiler, and link the C object files in.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您已经在为 Windows 进行构建,则根本不需要使用 winelib。 Winelib 的存在只是为了在 wine 支持的非 x86 平台(例如 linux ppc)上提供 wine 下的 Windows 构建环境。如果您的构建系统已经在构建 Windows 二进制文件(没有性能优势),则根本不需要使用它。
您必须做的一件事是确保 DFL dll 使用的 Win32 API 调用在 wine 下工作(即使您使用 winelib,您也必须这样做)。
因此,不需要使用 winelib,只需在 wine 下尝试使用您已经使用测试应用程序为 Windows 构建的 dll,并针对任何不支持的 api 调用提交 wine 错误。 :)
You don't need to use winelib at all if you are already building for windows. Winelib exists only to provide a windows build environment under wine on a wine supported non-x86 platform (e.g. linux ppc). No need to use it at all if your build system is already building windows binaries (no performance benefit).
One thing you will have to do is make sure that the Win32 API calls that the DFL dlls use work under wine (you'd have to do this even if you used winelib).
So the short of it is, no need to use winelib just try under wine the dlls you are already building for windows with your test app and file wine bugs for any api calls that aren't supported. :)