C#Unity 3D NAudio在检查默认音频端点时抛出NullReferenceException
我刚刚安装了Unity 3D,因为我想制作一个简单的游戏。但是NAudio图书馆有一个问题 这是我的代码: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
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的所有功能,并且最终可以工作。现在我只需要以某种方式处理数据。