2013-02-05 25 views
0

我剛剛在運行OSX 10.6.8的Macbook Pro上下載了Cinder v0.8.4,並開始使用Xcode的歡迎使用Cinder的第1章。我用Tinderbox工具用默認選項創建一個名爲CinderProjectApp的新項目。我也按照說明來確保我的boost庫與默認(1.4.2)相同。getOpenFilePath在Xcode的Cinder教程的早期部分出現錯誤10.6.8

當我開始學習本教程時,我想看看是否可以從/ resources文件夾加載自己的圖像,因此我下載了一個圖像「Broccoli.jpg」並將其添加到我的CinderProjectApp/resources /目錄。

這裏是我的draw()函數:

void CinderProjectApp::draw() 
{ 
    gl::clear(Color(0, 0, 0), true); 

    try 
    {  
     std::string p = FilePath("", ImageIo::getLoadExtensions());  

     if(! p.empty()) 
     { // an empty string means the user canceled  
      myImage = gl::Texture(loadImage(p)); 
     } 
    } 

    catch(...) 
    { 
     console() << "Unable to load the image." << std::endl; 
    } 

    gl::draw(myImage, getWindowBounds()); 
} 

當我編譯我的小CinderProjectApp.cpp代碼全部,我得到錯誤:轉換,從「提高:: filesystem3 ::路徑」非-scalar type'std :: basic_string,std :: allocator>'請求在我指定文件路徑的行上。由於這在句法上是有效的,所以我想知道getOpenFilePath發生了什麼問題。

如果您需要查看代碼的其餘部分,請告訴我。順便說一句,我轉發了我的問題here

回答

2

感謝Paul and Sansumbrella’s help在forum.libcinder.org上,我將try-catch移動到setup函數(爲了提高效率),並使用ci :: fs :: path對象來保存路徑。這裏是我的新setup()函數(假設除了try-catch邏輯的重新排序外,上面draw()中的所有內容都不變):

void CinderProjectApp::setup() 
{ 

    try 
    { 
     ci::fs::path p = getOpenFilePath("", ImageIo::getLoadExtensions()); 

     if(! p.empty()) 
     { // an empty string means the user canceled 
      myImage = gl::Texture(loadImage(p)); 
     } 
    } 

    catch(...) 
    { 
     console() << "Unable to load the image." << std::endl; 
    } 
}