如何使用WINE在Linux上使用Windows .lib
Posted
技术标签:
【中文标题】如何使用WINE在Linux上使用Windows .lib【英文标题】:How to use a windows .lib on linux using WINE 【发布时间】:2013-05-28 07:55:07 【问题描述】:我一直在 windows 平台上使用 Qt(使用 c++ 代码 + Qt 库),并且正在将我的项目移植到 Linux 平台上。
使用 Qt 这是一个非常简单的过程,我的项目在 Linux 平台上运行,几乎不需要任何更改。
但是,我们需要使用 3rd 方 windows 编译 .lib
和相关的头文件。显然这个文件不能在 Linux 下工作,但我一直在阅读建议我可以使用 Wine 来做到这一点的帖子。
所以总的来说,我的项目将作为一个普通的 Linux (Ubuntu) 项目运行,但我想使用 Wine
包含这个 .lib
文件。我一直无法找到明确的答案“如何做到这一点”。我不确定您是否使用Wine
将.lib
转换为.so
文件,或者您是否必须使用一些“类似葡萄酒”的约定将其静态链接...
谁能帮我指出正确的方向?
谢谢:)
【问题讨论】:
【参考方案1】:AFAIK,您无法使用 Wine 制作混合应用程序(即将 C++ Linux 可执行文件与一些 Linux 静态库和 Windows 静态库链接)。
我建议的解决方案之一是将您的 Windows 库封装在充当某种网络服务的 Windows 程序中,然后让您的 Linux 应用程序通过网络与您的 Windows 库通信。
但是,它增加了您的软件的复杂性,需要您知道如何进行一些网络编程(不过,如今这很容易做到)并且并不适合所有类型的库,尤其是如果您的库有某种类型的库图形用户界面。
【讨论】:
嗯...我喜欢您对“独立”应用程序的想法,它确实增加了复杂性,但它是一个潜在的解决方案。虽然我开始接受在 Windows 中制作解决方案并在这个 Wine 环境中运行它的前景。我想一个普遍的问题是“使用葡萄酒有什么缺点”……比如时间成本、可靠性等?我的程序只需要非常基本的东西(线程、IP 套接字、计时器、文件 IO,仅此而已!)。 我认为性能损失,我不能说...我对 Wine 的了解不够。【参考方案2】:您是否尝试过在 Windows 下编译并在 Wine 下运行整个程序?
我不确定你是否可以拼接 Wine 和 Linux 程序。
【讨论】:
嗨罗比。我没有尝试过,这是(在我看来)最后的手段!如果可能的话,我真的更喜欢在 linux 中开发它。但是你的观点是非常有效的,如果你可以“拼接葡萄酒和 linux 程序”......我也不知道! 您有什么特别的原因希望您的主程序是原生 linux 而不是 windows on wine? 嗯,我的项目的目标是一个 linux (ubuntu) 盒子。理想情况下,一切都是基于 linux 的,这样我们就不需要 Windows PC。但除此之外......不,没有:) 我在对马蒂厄的评论中提到我开始认为这是前进的道路。通过葡萄酒跑步有什么缺点吗? (我的其他评论中的同样问题) 我们最终使用葡萄酒来开始工作......所以选择了这个作为答案:)【参考方案3】:我无法想象混合方法会奏效。在任何情况下,将程序的一部分作为本机应用程序运行,而在 WINE 中运行另一部分,与在 WINE 中运行的完整程序相比,不会给您带来太多优势。无论哪种情况,都需要 WINE。
在 WINE 中运行完整程序的主要缺点是 GUI 的外观和感觉可能看起来对系统有点陌生。但是,对 WINE 使用正确的设置将最大限度地减少问题。附带说明一下,由于可用的桌面环境不同,大多数 Linux 用户习惯于不同的 GUI 概念。就我个人而言,我的 KDE 桌面上运行着很多 GNOME 应用程序。
我会亲自尝试在 WINE 中运行您的程序。它使开发变得更加容易。一种在电气工程师中非常有名的电路仿真工具使用了这种方法。它被称为 LTSpice。虽然只有 Windows 二进制文件可用,但开发人员使用 WINE 对其进行测试以确保它可以在 Linux 上运行。承认,它是免费提供的工具,但社区接受这种方法。
【讨论】:
非常感谢您的反馈,我开始对 wine 方法有了更自信的感觉 :) 我最好去查找如何将我的 windows 应用程序部署到 wine 中...以上是关于如何使用WINE在Linux上使用Windows .lib的主要内容,如果未能解决你的问题,请参考以下文章
如何安装和使用Wine,以便在Linux上运行Windows应用程序