在便携式应用程序中使用Windows DLL

时间:2008-11-09 22:17:22

标签: c++ windows linux dll portability

我已经构建了一个Windows C ++应用程序,我想将其移植到linux。这样做的主要原因是我们的IT员工可以轻松进行系统维护。除了运行这个应用程序的一台Windows机器,我们只是一个linux操作。

此应用程序内置于 - 并在Windows上运行的原因是它使用Windows API(DLL和标头)连接到属于外部方的服务器。这个连接使用了一些我不想搞砸的专有协议,(我认为我不允许合同)所以我坚持使用.dll。

这个dll只是windows,因为(我怀疑)dll中的windows套接字特定代码。除此之外,它没有做很多先进的东西。有没有办法在WINE上运行Linux上的应用程序并嗅出协议并自己重新实现DLL,这将允许我让这个应用程序在Linux机器上运行?

这个想法受到了item about QT creator的启发,所以任何允许我玩这个的解决方案都会非常酷。

1 个答案:

答案 0 :(得分:6)

最明显的中间立场是使用Winelib。我不知道它是否可以直接链接到本机DLL,但如果没有,你可能可以用LoadLibrary()加载它。

然后,您可以将应用程序分为两部分:一个只调用DLL的包装器,其余的代码与您的包装器通信。您可以在两个单独的进程中使用,因此只需要使用Winelib编译包装器。然后,应用程序的其余部分可以使用您想要的任何框架。