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

标签 iphone objective-c c core-audio

我正在使用苹果示例代码 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/

相关文章:

ios - 使用cordova flle transfer将图像/视频保存到IOS中的图库

iOS In App Purchase 仅在 App 审查中崩溃 - 在沙盒测试中发现作品

iphone - 我是否正确实现了 TTLauncher?

objective-c - 我的应用程序的 [NSHTTPCookieStorage setCookie] 破坏了浏览器的 cookie?

ios - getter 和 setter 不工作 objective-c

ios - 存储在 SSKeychain 中的 CFUUID 在某些设备中为空

iphone - 如何使用新的 Facebook Connect iOS API 通过 DIALOG 授权用户?

c - 如何检查两个数组是否在 C 中互为镜像?

c - 串口通讯中换行字符的意义

c - 使用 ncurses 打印字符失败