我最近遇到了這個奇怪的問題,在我的Xcode中的Cocoa應用程式專案中,當使用 "fopen"(errno 2)時,我得到的錯誤是沒有找到檔案,從一個C 檔案中呼叫。我確定將這些檔案復制到專案的目錄中,然后我將它們從Finder目錄中拖到Xcode專案樹中。最后,在方案的選項中,我選中了 "使用自定義目錄",并輸入了我擁有專案和所有檔案的目錄。方案建立的很好,但是在運行時我得到一個BAD ACCESS錯誤,我可以看到我的FILE*變數仍然是空的。拋出例外的命令實際上是兩行之后的 "fread",但這只是因為 "fopen "沒有完成其作業。
這整個設定以前在純 C 專案中運行良好。但這次不同,因為它一開始是一個使用 Objective-C 的 Cocoa 應用程式(因為我打算在程式的主要邏輯中使用 C )。在某些時候,我還不得不把所有".m "檔案的擴展名改為".mm",否則編譯器甚至找不到C 標準庫!(但這可能是無關緊要的。(但這可能是題外話了)
因此,問題是......
所以問題是......為了讓程式找到我試圖打開的檔案,我還需要檢查什么?
注意:這個專案的主干是用C 撰寫的,我使用Cocoa只是為了能夠在螢屏上顯示影像,所以如果有人有更好的方法在C 專案中包含圖形,我都會聽。
謝謝您的閱讀
編輯:我使用的是Xcode 12.4和Catalina 10.15.7。uj5u.com熱心網友回復:
Cocoa 應用程式與檔案的作業方式與命令列 C 應用程式不同。Cocoa應用程式創建了一個應用程式包,這是你想讀取的檔案應該在的地方。如果你有你想在Cocoa應用程式中讀取的檔案,請將它們添加到專案中。當你把檔案添加到專案中時,它們將被復制到應用包中。請確保它們在應用程式目標的復制捆綁資源構建階段。
使用Bundle類中的方法來定位檔案,而不是fopen。下面的Swift代碼在主應用程式捆綁包中定位了一個名為 "MyFile.txt "的檔案:
let MainBundle = Bundle.main
let fileURL = mainBundle.url(forResource: "MyFile", withExtension: "txt")
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/320044.html
標籤:

