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

问题描述:

我已经构建了一个我想要移植到Linux的Windows C++应用程序。这样做的主要原因是我们的IT人员对系统维护的方便性。除了运行这个应用程序的一台Windows机器,我们只是一个linux操作。在便携式应用程序中使用Windows DLL

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

这个DLL是仅仅因为(我怀疑)在Windows DLL中的特定代码窗口。除此之外,它不会做很多先进的东西。在WINE的Linux上运行应用程序和嗅出协议并自己重新实现DLL之间有什么办法可以让我在Linux机器上运行该应用程序?

这个想法灵感来自于这个item about QT creator所以任何解决方案,让我玩这将是非常酷。

+1

现在葡萄酒如此完整,所以最简单的方法就是在Wine上运行这样的程序。如果你能将程序移植到mingw工具链中,你仍然可以维护它并在Linux上运行它,根本不需要Windows。你可以使用标准的GNU make和一切。 – 2015-08-28 07:36:16

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

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