COM Interop in Mono 2.0



我试图在Unity项目中使用此代码,但是似乎在单声道/.NET中com Interop的实现不同,这会导致代码失败或崩溃。在.NET中运行代码效果很好,但是使用Mono 2.0(在Unity之外)运行它的方式与Unity相同,这表明这是单声道而不是Unity的问题。

如果我编译并运行代码AS,则由于MMDeviceEnumerator到IIMMDeviceEnumerator的类型失败而失败。在用[cominterop]装饰所有接口时,演员会成功,但是呼叫getDefaultOudioendpoint会违反访问权限。

很难找到一般的单声道上的com Interop文档,尤其是关于这样旧版本的文档。是否可以运行此操作?

将com函数包装在c效果中,然后通过p/indoke调用c函数。这可以通过两个步骤完成:

  1. 创建一个VC 项目,该项目包裹您在Wasapi中所需的功能。通过模块定义文件或__declSpec(dllexport)暴露它们。将代码构建到揭示所需功能的DLL中。
  2. 在您的Unity3D项目中,通过P/Invoke访问它们。

这是示例。在您的情况下,只需使用C/C 零件中的COM代码来完成您想要的事情。

单声道1.0和mono 1.1.xx不支持com。

停止尝试使用Mono,Mono用于平台独立性,而 com Interop 仅是Microsoft。使用开源SDK进行视频播放或从命令行中更好地调用应用程序,例如 vlc 播放,编码等。

最新更新