[英]Porting C++ Win32 app to linux app
我正在將C ++ Win32應用程序轉換為Linux,我在Win32應用程序中使用的類型和函數有問題,我已經解決了類型問題(通過使用typedef和micros),但是我不知道應該使用哪個函數代替這些函數職能 ?
- 創建文件
-GlobalAlloc
-wsprintf
-GlobalFree
CreateFile
: open
ReadFile
: read
GetFileSize
: stat
(這也為您提供了許多其他信息。對於大小,該字段為st_size
。) GlobalAlloc
和GlobalFree
:您可以只使用malloc
和free
。 wsprintf
:這看起來與標准C函數swprintf
,應該在支持C的任何系統上都存在。 在大多數情況下, CreateFile
, ReadFile
可以用標准的C或C ++文件管理(即FILE *
或fstream
類型的操作)替換-但是,有些選項是您無法做到的(例如對文件的“獨占訪問”文件),因此,像往常一樣,細節是魔鬼。
編輯: fopen
將創建並且fread
將從FILE *
讀取, fstream::open
和fstream::read
將是創建和從fstream
讀取的函數。
GetFileSize
通常通過“搜索文件末尾,然后獲取文件位置”來完成。 因此,對於FILE *
使用fseek(fp, 0, SEEK_END);
和size = ftell();
或fstream::seekg();
和fstream::tellg()
-在從文件中讀取文件之前,請不要忘記返回到開頭。
GlobalAlloc
和GlobalFree
應該很好地替換為malloc
或new
和free
或delete
的相關內容,具體取決於其使用方式。
打印到wchar_t
字符串中的標准函數是swprintf
,如果編譯器符合標准,則該函數也應在Windows上運行。
使用標准C(++)庫的好處是您現在可以在不更改代碼的情況下為Windows和Linux編譯代碼。 而且,您不太可能分辨出性能差異。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.