gpt4 book ai didi

iphone - 将字节/数据从 C 类发送到 Objective-C 类

转载 作者:搜寻专家 更新时间:2023-10-30 20:11:42 26 4
gpt4 key购买 nike

我正在使用苹果示例代码 SpleakHere .在这段代码中有一个名为 AQRecorder 的 calss,它是一个 C 类。我想将声音字节发送到我拥有的 Objective-C 对象。此对象通过 udp 发送数据。这是我试图在 c 代码中执行 objective-c 函数的函数。

    void AQRecorder::MyInputBufferHandler(  void *                                  inUserData,
AudioQueueRef inAQ,
AudioQueueBufferRef inBuffer,
const AudioTimeStamp * inStartTime,
UInt32 inNumPackets,
const AudioStreamPacketDescription* inPacketDesc)
{
AQRecorder *aqr = (AQRecorder *)inUserData;
try {
if (inNumPackets > 0) {
// write packets to file
XThrowIfError(AudioFileWritePackets(aqr->mRecordFile, FALSE, inBuffer->mAudioDataByteSize,
inPacketDesc, aqr->mRecordPacket, &inNumPackets, inBuffer->mAudioData),
"AudioFileWritePackets failed");
aqr->mRecordPacket += inNumPackets;
NSData* data=[NSData dataWithBytes:inBuffer->mAudioData length:inBuffer->mAudioDataByteSize];
[(Udp*)udpp sendData:data];
}

// if we're not stopping, re-enqueue the buffe so that it gets filled again
if (aqr->IsRunning())
XThrowIfError(AudioQueueEnqueueBuffer(inAQ, inBuffer, 0, NULL), "AudioQueueEnqueueBuffer failed");
} catch (CAXException e) {
char buf[256];
fprintf(stderr, "Error: %s (%s)\n", e.mOperation, e.FormatError(buf));
}

虽然 NSData 函数工作正常,但我无法将我的对象 (Udp) 添加到类中,因此无法调用它的函数。我尝试在任何地方声明 Udp 对象(类内、类外、header .mm 文件,如 void*...)但没有任何东西可以编译...

虽然我无法添加对象来发送数据...但我使用了 NSNptification 来将数据从 c 对象移植到 objective-c 对象。

请帮忙


虽然我不能添加一个对象来发送数据......我使用 NSNotification 来将数据从 c 对象移植到 objective-c 对象

最佳答案

尝试将所有 .m 文件的扩展名更改为 .mm

如果可行,则说明存在依赖性问题。如果 Objective-C 文件包含 C++ 文件,则该 Obj-C 文件的扩展名应该是 .mm 而不是 .m。此外,如果这个 Objective-C 文件现在包含在其他某个 Objective-C 文件中,那么该文件的扩展名也应该是 .mm

关于iphone - 将字节/数据从 C 类发送到 Objective-C 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6383990/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com