1

ネイティブ コード (ランタイム コンポーネント) を含む WP8 アプリを開発しています。ランタイム コンポーネント内で、ac スタイル配列の内容を確認する必要があります。この配列は小さくないので、fopen/fwrite/fclose を使用して配列をファイルに書き込むのが最善だと考えました。fopen と fwrite の戻り値を確認すると、成功したことがわかります。しかし、ファイルが見つかりません (Windows Phone Power Tools を使用)。

では、ファイルはどこに書き込まれたのでしょうか。Visual Studio から (コンピューター上の) ファイルに配列の内容をダンプする別の方法はありますか?

4

2 に答える 2

1

WP8 の fopen/fwrite/fclose API に慣れていません。これはおそらく、アプリの送信に使用できるホワイトリストに登録された API ではないことを意味します。C++ で IsoStore を使用する場合は、"Windows::Storage::ApplicationData::Current->LocalFolder" を使用するのが最適です。Win8 コード サンプル @ http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh700361.aspx?cs-save-lang=1&cs-lang=cpp#code-snippet-1を参照してください。

于 2013-01-13T23:07:41.473 に答える
1

ありがとう、ジャスティン、

これが私がそれをやった方法です:

auto folder = Windows::Storage::ApplicationData::Current->LocalFolder;
Concurrency::task<Windows::Storage::StorageFile^> createFileOp(
    folder->CreateFileAsync(L"Data.bin", Windows::Storage::CreationCollisionOption::ReplaceExisting));

createFileOp.then(
    [nData, pData](Windows::Storage::StorageFile^ file)
    {
        return file->OpenAsync(Windows::Storage::FileAccessMode::ReadWrite);
    })
    .then([nData, pData](Windows::Storage::Streams::IRandomAccessStream^ stream)
        {
            auto buffer = ref new Platform::Array<BYTE>(pData, nData);

            auto outputStream = stream->GetOutputStreamAt(0);
            auto dataWriter = ref new Windows::Storage::Streams::DataWriter(outputStream);                        
            dataWriter->WriteBytes(buffer);

            return dataWriter->StoreAsync();
        })
   .wait();

それを私が「意味した」ものと比較してください:

FILE *fp = fopen("Data.bin", "wb");
if (fp)
{
    int ret = fwrite(pData, 1, nData, fp);
    fclose(fp);
}
于 2013-01-14T20:46:04.997 に答える