我试图将缓冲区添加到队列中,并想使用AudioQueueEnqueueBufferWithParameters,如iOS Audio Toolbox文档中所述。我看到它是MonoTouch程序集浏览器中的一个私人外部。

    [DllImport ("/System/Library/Frameworks/AudioToolbox.framework/AudioToolbox")]
    private static extern AudioQueueStatus AudioQueueEnqueueBufferWithParameters......


是否可以在其他地方声明此extern以便使用它?
如果是这样,怎么办?

最佳答案

通常,p / invoke声明在MonoTouch中都标记为private。然后提供了更安全,更易于使用的托管替代方案。

在这种特定情况下,从公共AudioQueueEnqueueBufferWithParameters方法调用AudioQueue.EnqueueBuffer p /调用。由于这是MonoTouch和MonoMac之间共享的代码的一部分,因此可以看到完整的源代码here

当然,您仍然可以将先前的p / invoke声明复制粘贴到您自己的应用程序中,并且它也可以工作(但是在某些情况下,与相关的托管API进行交互可能会更复杂)。

关于c# - 是否在Monotouch中实现AudioQueueEnqueueBufferWithParameters?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10082309/

10-13 06:06