我有一个需要在Linux上移植的应用程序。我正在考虑使用Free Pascal,问题是应用程序使用Windows API来执行串口通信等任务...是否有一个用于linux用户的msdn或一本书,涵盖了如果有apis,linux如何工作。
我很困惑。
答案 0 :(得分:5)
嗯,这是很可惜,但如果你在很Windows的dependend码(不依赖VCL!),那么很可能它会以更快的速度写从一开始而不是将它移植应用程序。
但如果它只是串口问题,那么试试多平台SynaSer库,在这里找到它:http://synapse.ararat.cz。
希望这有帮助:)
答案 1 :(得分:3)
从你的问题来看并不完全清楚,但是如果你担心Windows应用程序中有硬件控制功能的特定调用会使端口难以移植,那么我认为这是一种错位的恐惧。 Windows和Linux的运行原则是应用程序级程序员应远离硬件,并且所有应由操作系统内核处理,并且只能通过系统调用访问应用程序。由于不同操作系统的内核面临来自用户/应用程序的类似需求,因此它们往往具有执行相同类型的系统调用。有必要将系统调用相互匹配,但我没有理由认为这是不可能的。
可能更麻烦的是,您的Windows应用程序可能严重依赖Windows执行程序的窗口代码/ API。再次找到代码的类似物并非不可能,但可能会更复杂,例如在Linux中,这些东西通常根本不在内核中处理(与Windows不同)。
但话说回来,您的代码可能会像Qt这样的便携式工具包/库编写,这会让事情变得更容易。
祝你好运。
答案 2 :(得分:1)
如果程序包含GUI代码,你必须使用像GTK / XLIB这样的linux库来创建窗口,表单,按钮等......
Windows特定的函数(如EnterCriticalSection,WaitForSingleObject或_beginthreadex)必须替换为等效的linux api函数(可在此处找到一个很好的教程: “www.ibm.com/developerworks/systems/library/es-MigratingWin32toLinux.html”)或者您可以使用w2lpl或wine
等库答案 3 :(得分:0)
答案 4 :(得分:0)
我在使用WINE方面有很棒的经历。 (https://www.winehq.org/) 你根本没有真正移植你的应用程序。您只需确保它不违反WINE的一些基本约束,并按原样运行它。 WINE(虽然它说不是)是Windows API的模拟器,只会为你做翻译。它对API的覆盖范围非常完整。