将C ++ Win32应用程序移植到linux应用程序

时间:2013-05-01 08:24:44

标签: c++ linux

我正在将C ++ Win32应用程序转换为Linux,我在Win32应用程序中使用的类型和函数存在问题,我已经解决了类型问题(通过使用typedef和micros)但我不知道应该使用哪个函数而不是这些功能?

- CreateFile

- ReadFile

- GetFileSize

-GlobalAlloc

-wsprintf

-GlobalFree

2 个答案:

答案 0 :(得分:2)

  • CreateFileopen
  • ReadFileread
  • GetFileSizestat(这会为您提供很多其他内容 信息也是如此。对于大小,该字段为st_size。)
  • GlobalAllocGlobalFree:您可以使用mallocfree
  • wsprintf:这看起来与标准相同 C函数swprintf,它应该出现在任何支持C的系统上。

答案 1 :(得分:2)

在大多数情况下,CreateFileReadFile可以替换为标准C或C ++文件管理(即FILE *fstream类型操作) - 但有一些您无法达到这种方式的选项(例如对文件的“独占访问”),所以魔鬼就像往常一样,在细节中。

修改:fopen将创建,fread将从FILE *读取,fstream::openfstream::read将是创建和读取{fstream的函数{1}}。

GetFileSize通常通过“寻找文件末尾,然后获取文件位置”来完成。因此,对于FILE *使用fseek(fp, 0, SEEK_END);size = ftell();,或fstream::seekg();fstream::tellg() - 在您阅读之前不要忘记寻找回头文件。

GlobalAllocGlobalFree应该可以替换为mallocnew以及freedelete的相关内容,具体取决于具体方式它被使用了。

打印成wchar_t字符串的标准函数是swprintf,如果编译器符合标准,它也适用于Windows。

使用标准C(++)库的好处是,您现在可以编译Windows和Linux的代码,而无需更改代码。而且你不太可能分辨出性能差异。