【发布时间】: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 <fstream>用于第一个代码示例,#include <fcntl.h>用于第二个? -
#include <fstream>肯定是第一个 - 我在网上阅读,它说 std 库不包含在 android 中 - 有人建议将APP_STL := stlport_static添加到 makefile 但那没有t 似乎工作。我只是在尝试#include <fcntl.h>- 我认为它看起来很有希望 -
它将使用
<fcntl.h>编译。除非您以 root 身份运行,否则它实际上不会起作用。确保检查错误——这些函数不会抛出异常。如果您从open()返回的值errno 中(提示:#include <errno.h>)。
标签: android android-ndk android-source android-build