【问题标题】:Output to file in android c++ source在 android c++ 源中输出到文件
【发布时间】:2012-12-13 23:06:36
【问题描述】:

我已经设法从源代码编译 android 并安装在我的手机上。我可能应该从一开始就说我不是 C++ 开发人员,但我希望我能够弄清楚如何将变量中保存的数据输出到文件中。

经过一番谷歌搜索,我想出了以下代码:

#include <iostream>
#include <fstream>
using namespace std;

ofstream myfile;
myfile.open ("/data/wav.raw");
myfile < mMixBuffer;
myfile.close();

frameworks/base/services/audioflinger/AudioFlinger.cpp: In member function 'virtual bool android::AudioFlinger::MixerThread::threadLoop()':
frameworks/base/services/audioflinger/AudioFlinger.cpp:1769: error: 'ofstream' was not declared in this scope
frameworks/base/services/audioflinger/AudioFlinger.cpp:1769: error: expected ';' before 'myfile'
frameworks/base/services/audioflinger/AudioFlinger.cpp:1770: error: 'myfile' was not declared in this scope

在这不起作用之后,我尝试了再次给出编译错误:

int fd;
fd = ::open("/data/wav.raw",O_WRONLY | O_APPEND);
::write(fd,mMixBuffer,minBufferSize);
::close(fd);

frameworks/base/services/audioflinger/AudioFlinger.cpp: In member function 'virtual bool android::AudioFlinger::MixerThread::threadLoop()':
frameworks/base/services/audioflinger/AudioFlinger.cpp:1770: error: '::open' has not been declared
frameworks/base/services/audioflinger/AudioFlinger.cpp:1770: error: 'O_WRONLY' was not declared in this scope
frameworks/base/services/audioflinger/AudioFlinger.cpp:1770: error: 'O_APPEND' was not declared in this scope

如果从上面看不清楚,我正在尝试将大小为minBufferSize 的变量mMixBuffer 的内容附加到文件/data/wav.raw 中。有谁知道我如何做到这一点?

【问题讨论】:

  • 当您遇到编译错误时,显示这些错误实际上是什么总是有帮助的。看起来您可能没有将这段代码放在任何函数中,但很难确定。
  • 好的,抱歉 - 我认为代码可能非常不正确,以至于编译错误会使帖子变得混乱而不是帮助。我现在就添加它们。
  • 你确定你有#include &lt;fstream&gt; 用于第一个代码示例,#include &lt;fcntl.h&gt; 用于第二个?
  • #include &lt;fstream&gt; 肯定是第一个 - 我在网上阅读,它说 std 库不包含在 android 中 - 有人建议将 APP_STL := stlport_static 添加到 makefile 但那没有t 似乎工作。我只是在尝试#include &lt;fcntl.h&gt; - 我认为它看起来很有希望
  • 它将使用&lt;fcntl.h&gt; 编译。除非您以 root 身份运行,否则它实际上不会起作用。确保检查错误——这些函数不会抛出异常。如果您从open() 返回的值errno 中(提示:#include &lt;errno.h&gt;)。

标签: android android-ndk android-source android-build


【解决方案1】:

/data/目录不能修改。您将不会拥有相同的权限。试试 /mnt/sdcard(或)/data/data/。

【讨论】:

  • 谢谢。几天前我意识到了这一点并尝试了 /sdcard 但这没有用 - 我还没有查看错误代码。我会试试 /mnt/sdcard
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-04
  • 1970-01-01
  • 2019-04-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多