簡體   English   中英

將C ++ Win32應用程序移植到Linux應用程序

[英]Porting C++ Win32 app to linux app

我正在將C ++ Win32應用程序轉換為Linux,我在Win32應用程序中使用的類型和函數有問題,我已經解決了類型問題(通過使用typedef和micros),但是我不知道應該使用哪個函數代替這些函數職能 ?

- 創建文件

-ReadFile

-GetFileSize

-GlobalAlloc

-wsprintf

-GlobalFree

  • CreateFileopen
  • ReadFileread
  • GetFileSizestat (這也為您提供了許多其他信息。對於大小,該字段為st_size 。)
  • GlobalAllocGlobalFree :您可以只使用mallocfree
  • wsprintf :這看起來與標准C函數swprintf ,應該在支持C的任何系統上都存在。

在大多數情況下, CreateFileReadFile可以用標准的C或C ++文件管理(即FILE *fstream類型的操作)替換-但是,有些選項是您無法做到的(例如對文件的“獨占訪問”文件),因此,像往常一樣,細節是魔鬼。

編輯: fopen將創建並且fread將從FILE *讀取, fstream::openfstream::read將是創建和從fstream讀取的函數。

GetFileSize通常通過“搜索文件末尾,然后獲取文件位置”來完成。 因此,對於FILE *使用fseek(fp, 0, SEEK_END); size = ftell(); fstream::seekg(); fstream::tellg() -在從文件中讀取文件之前,請不要忘記返回到開頭。

GlobalAllocGlobalFree應該很好地替換為mallocnewfreedelete的相關內容,具體取決於其使用方式。

打印到wchar_t字符串中的標准函數是swprintf ,如果編譯器符合標准,則該函數也應在Windows上運行。

使用標准C(++)庫的好處是您現在可以在不更改代碼的情況下為Windows和Linux編譯代碼。 而且,您不太可能分辨出性能差異。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM