在linux中我应该使用什么而不是windows.h.

Ske*_*ith 17 c++ linux porting

我正在尝试将Windows程序移植到Linux.我从来没有在Linux上编程,也不知道我在做什么.我已经设法消除了我在Linux上的G ++编译器中遇到的许多错误,并将大多数剩余的错误追溯到不存在的变量类型.

我拿出windows.h文件,但我知道知道做什么用的做CALLBACK,HANDLE,DWORDHHOOK变量.显然HANDLE在Linux中没有相同的东西,所以我想我可能不得不重写一些结构.

任何人都可以解释我应该做什么或指向一些教程,教我如何在Linux中做这些事情?

如果有帮助,我的程序在RS-485网络上运行轮询循环.

Kon*_*lph 18

丢失的typedef(HANDLE等)不是你的问题.你的问题是Linux和Windows有完全不同的API,你不能简单地希望通过替换一些类型定义将一个端口移植到另一个.

必须替换代码的完整平台相关部分.因此,您的第一步是学习Linux API.这样做的最好方法是获得一本关于Linux编程的书.

此外,Linux不像Windows那样为窗口管理提供默认API,因此如果您正在编写图形应用程序,那么您还需要选择窗口库.


Sou*_*sou 13

没有"等价",可以说,对于Linux中的windows.h,你需要逐个修复你的错误,或者更好,重写你的linux代码(如果它不是太复杂).

但是,如果我们忽略特定于Windows的API,您可以修复typedef错误(DWORD,HANDLE,...):

#ifndef DWORD
#define WINAPI
typedef unsigned long DWORD;
typedef short WCHAR;
typedef void * HANDLE;
#define MAX_PATH    PATH_MAX
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef unsigned int BOOL;
#endif
Run Code Online (Sandbox Code Playgroud)

typedef源代码