C#Unity 3D NAudio在检查默认音频端点时抛出NullReferenceException

C#Unity 3D NAudio在检查默认音频端点时抛出NullReferenceException,c#,unity3d,.net-3.5,naudio,C#,Unity3d,.net 3.5,Naudio,我刚刚安装了Unity 3D,因为我想制作一个简单的游戏。但是NAudio图书馆有一个问题 这是我的代码: var enumerator = new MMDeviceEnumerator(); if (enumerator.HasDefaultAudioEndpoint(DataFlow.Render, Role.Multimedia)) //<--- crashes here { //... } var枚举器=新的MMDeviceEnumerator(); 如果(enumera

我刚刚安装了Unity 3D,因为我想制作一个简单的游戏。但是NAudio图书馆有一个问题

这是我的代码:

var enumerator = new MMDeviceEnumerator();

if (enumerator.HasDefaultAudioEndpoint(DataFlow.Render, Role.Multimedia)) //<--- crashes here
{
   //...
}
var枚举器=新的MMDeviceEnumerator();

如果(enumerator.HasDefaultAudioEndpoint(DataFlow.Render,Role.Multimedia))//问题不在于代码。如果查看的源代码如下所示:

public bool HasDefaultAudioEndpoint(DataFlow dataFlow, Role role)
{
    IMMDevice device = null;
    int hresult = ((IMMDeviceEnumerator)realEnumerator).GetDefaultAudioEndpoint(dataFlow, role, out device);
    ...
}
其中,
realEnumerator
是:

[ComImport, Guid("BCDE0395-E52F-467C-8E3D-C4579291692E")]
class MMDeviceEnumeratorComObject
{
}
它不是在检查
realEnumerator!=null,很可能是因为未考虑Unity,并且它不支持某些COM+互操作


如果你从2012, 4年后看,OP回答它从来没有工作过,并且必须为此创建一个C++ DLL。

技术上可能的副本,这不是崩溃的代码行。这是对包含正在崩溃的代码行的函数的调用。您应该调试
枚举器
变量。您尝试使用的变量可能为null,这就是为什么您会得到null引用异常。因为这是您提供给我们的唯一文本。我猜是你的
var枚举器。我再说一遍:
NullPointerException
=>JAVA,
NullReferenceException
=>NET。不知道为什么你的标题上写着指针。@Camiloterivento抱歉,在写标题时把它弄混了。帮帮忙,去他的。@TomLenc所以。。。我的回答对你有帮助吗?还是…?我找到了一个名为CSCore的库,它拥有NAudio的所有功能,并且最终可以工作。现在我只需要以某种方式处理数据。