Using FMOD for C#?

本文关键字:for FMOD Using | 更新日期: 2023-09-27 17:56:40

我正在用 C# 使用 FMOD。我尝试通过选择 Project->添加引用并浏览fmodex.dll来导入fmodex.dll文件,但我收到错误:

参考...无法添加。请确保该文件可访问,并且它是有效的程序集或 COM 组件

它是可访问的,但我仍然收到错误。我阅读了指南,它说在链接到fmodex.dll文件时使用fmodex_vc.lib。所以我尝试了,但我似乎找不到如何在 Visual Studio 中链接到 .lib 文件;搜索谷歌总是引导我链接到.dll文件。

Using FMOD for C#?

Fmod 是用非托管C++编写的,因此您无法直接从 .Net 应用程序引用它。如果我没记错的话,在名为"fmod_wrapper"的目录下的 fmod 包中有一个 fmodex 的 c# 包装器.dll它可以添加到您的项目中,它将负责为您制作 P/调用。

尝试 https://github.com/madrang/FmodSharp 已经工作了一段时间。它应该比当前的 Fmod 包装器更好。

而不是像在 C# 中使用 C++ 那样使用句柄和编码。FmodSharp包装器是面向对象的,无需考虑使用句柄。

public static void Main (string[] args)
{
    Console.WriteLine ("Fmod Play File Test");
    Xpod.FmodSharp.Debug.Level = Xpod.FmodSharp.DebugLevel.Error;
    var SoundSystem = new Xpod.FmodSharp.SoundSystem.SoundSystem();
    Console.WriteLine ("Default Output: {0}", SoundSystem.Output);
    SoundSystem.Init();
    SoundSystem.ReverbProperties = Xpod.FmodSharp.Reverb.Presets.Room;
    if (args.Length > 0) {
        foreach (string StringItem in args) {
            Xpod.FmodSharp.Sound.Sound SoundFile;
            SoundFile = SoundSystem.CreateSound (StringItem);
            Xpod.FmodSharp.Channel.Channel Chan;
            Chan = SoundSystem.PlaySound(SoundFile);
            while(Chan.IsPlaying) {
                System.Threading.Thread.Sleep(10);
            }
            SoundFile.Dispose();
            Chan.Dispose();
        }
    } else {
        Console.WriteLine ("No File to play.");
    }
    SoundSystem.CloseSystem();
    SoundSystem.Dispose();
}

为了在 C# 中使用 FMOD,您需要使用 p/Invoke 包装 FMOD 函数和结构。此任务已在开源项目 fmodnet 中为您处理

若要将 COM 项添加到 VS 项目,请执行以下步骤:

  • 注册 COM

  • 选择"添加引用"

  • 选择"COM "选项卡

  • 浏览到项目并选择它。

您应该看到(在构建后)VS已经在BIN dir中创建了一个Interopt DLL库。