我构建了一个 Windows C++ 应用程序,我想将其移植到 Linux。这样做的主要原因是便于我们的 IT 员工进行系统维护。除了运行此应用程序的一台 Windows 机器外,我们仅在 Linux 上运行。
此应用程序内置于 Windows 并在 Windows 上运行的原因是它使用 Windows API(dll 和 header )连接到属于外部方的服务器。此连接使用了一些我不想乱用的专有协议(protocol)(而且我认为契约(Contract)上不允许这样做)所以我只能使用 .dll。
这个 dll 是 windows 只是因为(我怀疑)dll 中的 windows 套接字特定代码。除此之外,它并没有做很多高级的事情。在 WINE 中仅在 linux 上运行应用程序和嗅探协议(protocol)并自己重新实现 DLL 之间有什么方法可以让我在 linux 机器上运行这个应用程序吗?
这个想法是受这个 item about QT creator 启发的所以任何允许我使用它的解决方案都会非常酷。
最佳答案
最明显的中间立场是使用 Winelib .我不知道它是否可以直接链接到 native DLL,但如果不能,您可能可以使用 LoadLibrary()
加载它。
然后您可以将您的应用程序分成两部分:一个只调用 DLL 的包装器,以及与您的包装器通信的其余代码。您可以将两者放在不同的进程中,因此只有包装器必须使用 Winelib 进行编译。然后,应用程序的其余部分可以使用您想要的任何框架。
关于c++ - 在可移植应用程序中使用 Windows DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/276562/