我正在尝试在磁盘上创建一个新文件,并使用OSX上的Core Audio框架对其进行记录。我现在的主要障碍是我似乎无法使用以下代码创建文件。我的目标是找出为什么下面的代码不起作用,以便我可以继续处理我的项目的其余部分。您可以在下面看到此代码的输出。
string fp = "…path…to…file.../file.wav"
CFURLRef audioFileURL = CFURLCreateFromFileSystemRepresentation(
NULL,
(const UInt8 *)fp.c_str(), // filename
fp.length(), // number of bytes in filename
false // this is a file, not a directory
);
if(audioFileURL == NULL){
cout << endl << "audioFileURL == NULL :(";
}
OSStatus retErr = AudioFileCreateWithURL (
audioFileURL,
df.mFormatID,
&aqData.mDataFormat,
kAudioFileFlags_EraseFile,
&aqData.mAudioFile
);
cout << endl << "\nAudioFileCreateWithURL error:" << retErr;
输出以下内容:
AudioFileCreateWithURL error:1954115647
我没有运气找出这个错误意味着什么。这里的任何帮助都是适用的。
答案 0 :(得分:0)
Core Audio错误以数字或4字母代码的形式返回。我猜你显示的奇怪数字是代码的内存位置。
你需要这样的东西来确定和转换:
static char *FormatError(char *str, OSStatus error)
{
// see if it appears to be a 4-char-code
*(UInt32 *)(str + 1) = CFSwapInt32HostToBig(error);
if (isprint(str[1]) && isprint(str[2]) && isprint(str[3]) && isprint(str[4])) {
str[0] = str[5] = '\'';
str[6] = '\0';
} else
// no, format it as an integer
sprintf(str, "%d", (int)error);
return str;
}