C# 是否有任何与.NET兼容的声音SDK?

C# 是否有任何与.NET兼容的声音SDK?,c#,.net,audio,C#,.net,Audio,我正在开发一款C#XNA游戏,最流行的声音SDK(如MSS或FMOD)主要与C/C++配合使用。与.NET配合使用,但不幸的是,我认为它大量使用了p/Invoke。这意味着,虽然您可以在Windows上从XNA使用它,但如果您需要在XBox之类的设备上运行代码,则可能会遇到问题。事实上,这并不坏,因为您可以通过使用p/Invoke从csharp调用c/cpp库。 如果您使用windows,只需在C#和您选择的库之间创建(或查找)一个层。 有一些小的方法可以从cpp dll调用函数。我同意上面的A

我正在开发一款C#XNA游戏,最流行的声音SDK(如MSS或FMOD)主要与C/C++配合使用。

与.NET配合使用,但不幸的是,我认为它大量使用了p/Invoke。这意味着,虽然您可以在Windows上从XNA使用它,但如果您需要在XBox之类的设备上运行代码,则可能会遇到问题。

事实上,这并不坏,因为您可以通过使用p/Invoke从csharp调用c/cpp库。
如果您使用windows,只需在C#和您选择的库之间创建(或查找)一个层。

有一些小的方法可以从cpp dll调用函数。

我同意上面的Avram,虽然我不会pinvoke,但我会使用tlbimp.exe生成一个包装器。如果可以,您应该能够从您最喜欢的开源C/C++api中找到一个类型库,然后在它上运行tlbimp.exe

通过这种方式,您可以获得api的所有额外功能,而不必亲自处理pinvoke/其他不安全调用,包装器可以为您处理所有这些麻烦

然而,我想问,你想对音频做些什么,而你自己用核心.Net和XNA类编写一些时髦的代码却做不到,如果我有点疯狂的话,我见过有人做过这样的事情,比如安装第三方发烧友应用程序并从中提取dll,然后pinvoke这些方法(尽管工作非常辛苦)

如果你想避免pinvoke的电话,你几乎被固定在XNA本身


虽然有很多游戏引擎,但其中一个可能包含一些漂亮的音频类,您可以借用。

与.Net一起使用。

对于无法通过XNA的音频播放功能实现的声音,您希望如何处理?


请注意,如果调用外部音频API,您的代码顺利移植到XBox、WinPhone等的机会将大大减少。

嗯。。。为什么要为.NET搜索声音SDK?XNA已经配备了XACT,并在多个平台上完全支持它


对于和,都有.NET包装器


我两者都用过,我认为FMOD.net是两者中最好的。

。另外,有些人使用AudioEngine或SoundEffect类。非常感谢!目前我正在使用XNA的音响系统,但据说最好选择专业的SDK。如果真的没有第三方SDK直接使用c#,那么P/Invoke几乎是唯一的选择。@Andrew,如果你对这个答案满意,你可以在我的答案上签名V