2014-09-11 27 views
0

我有一個DirectXXaml項目和用純C++編寫的遊戲代碼,我需要在我的一個類中打開一個文件。我該怎麼做?我想我不得不使用#pragma managed但沒有結果。如何在DirectXXaml Project中從純C++類調用C++/CX代碼?

以前我有這個代碼:

void DataLoader::load(std::string const& file) { 
    std::ifstream fileStream(file.c_str(), ios::binary); 

    fileStream.seekg(0, ios::end); 
    _dataSize = fileStream.tellg(); 
    fileStream.seekg(0, ios::beg); 

    std::vector<char> buffer(_dataSize); 
    fileStream.read(&buffer[0], buffer.size()); 

    _data = new ByteArray(buffer); 

    fileStream.close(); 

    dispatchEvent(new Event(Event::COMPLETE)); 
} 

我如何在這裏使用C++/CX?

+0

警告:在Windows上不推薦使用狹義的'ifstream'構造函數,因爲它使用ANSI代碼頁來打開文件。如果路徑包含無法在該代碼頁中表示的字符,則打開將失敗。 – Mgetz 2014-09-11 14:01:46

回答

0

要使用C++/CX,您需要爲您正在構建的項目打開/ ZW標誌。您可以在項目屬性 - >配置屬性 - > C/C++ - >使用Windows運行時擴展下找到該設置。如果不是,請將它設爲'是'。

一旦打開此標誌,您應該可以從現有的C++代碼調用C++/CX Windows運行時API。

這裏是一個博客帖子前一陣子我就這個話題寫了,你可能會碰到,你只希望包括在項目中的一些文件/ ZW標誌的情況下,這是可以做到:http://robwirving.com/2013/10/01/windows-phone-8-native-dev-tip-hack-your-vcxproj-file-to-selectively-include-the-winrt-extensions/

+0

請將您博客文章中的相關部分複製到答案中,外部網站的鏈接可能會失效(甚至是您的博客),因此答案的全部價值將丟失。 – Mgetz 2014-09-11 13:57:46

+0

我做到了。最重要的是設置消費Windows運行時擴展標誌,正如我在我的答案中指出的那樣。該博文僅包含其他可能有用的信息。 – robwirving 2014-09-11 16:17:37