0

我有一个需要在 Linux 上移植的应用程序。我正在考虑使用 Free Pascal,问题是应用程序使用 Windows API 来执行诸如串行端口通信等任务......是否有适用于 linux 用户的 msdn,或者如果有 api,是否有一本介绍 linux 如何在内部工作的书。

我很困扰。

4

5 回答 5

5

好吧,很遗憾地说,但是如果您的代码非常依赖于 Windows(不依赖于 VCL!),那么从一开始就编写应用程序而不是移植它可能会更快。

但如果只是串口问题,那么试试多平台 SynaSer 库,在这里找到它:http: //synapse.ararat.cz

希望这有帮助:)

于 2012-05-20T15:16:38.113 回答
4

Robert Love 有一本关于 Linux 系统编程的书 - 将涵盖该领域,而且 Love 的书通常都不错,因此值得一看。

从您的问题中并不完全清楚,但如果您担心 Windows 应用程序中对硬件控制功能的特定调用使其难以移植,我建议这是一种错位的恐惧。Windows 和 Linux 的运行原则是应用程序级程序员应该远离硬件,所有这些都应该由操作系统内核处理,并且只能通过系统调用被应用程序访问。由于不同操作系统的内核面临来自用户/应用程序的相似需求,它们往往具有执行相同类型事情的系统调用。有必要将系统调用相互匹配,但我看不出为什么这是不可能的。

可能更麻烦的是您的 Windows 应用程序可能严重依赖 Windows 执行程序的窗口代码/API。再次为您的代码找到类似物并非不可能,但可能会更复杂一些,例如在 Linux 中,这些东西通常根本不在内核中处理(与 Windows 不同)。

但是话又说回来,您的代码可能是针对像 Qt 这样的可移植工具包/库编写的,这会使事情变得容易得多。

无论如何祝你好运。

于 2012-05-20T20:54:27.413 回答
1

如果程序包含 GUI 代码,您必须使用 GTK/XLIB 等 Linux 库来创建窗口、表单、按钮等...

Windows 特定函数(如 EnterCriticalSection、WaitForSingleObject 或 _beginthreadex)必须替换为等效的 linux api 函数(可以在此处找到一个很好的教程:“www.ibm.com/developerworks/systems/library/es-MigratingWin32toLinux.html”)或者您可以使用w2lplwine等库

于 2013-02-19T14:58:22.353 回答
0

仅使用 WINE,我就获得了很棒的体验。( https://www.winehq.org/ ) 你根本没有真正移植你的应用程序。您只需确保它不违反 WINE 的一些基本约束并按原样运行它。WINE(虽然据说不是)是 Windows API 的模拟器,只会为您进行翻译。它对 API 的覆盖非常完整。

于 2017-05-12T15:25:18.037 回答