【问题标题】:Using FMOD for C#?在 C# 中使用 FMOD?
【发布时间】:2011-05-16 16:13:31
【问题描述】:

我正在使用 C# 中的 FMOD。我尝试通过选择 Project->Add Reference 并浏览 fmodex.dll 来导入 fmodex.dll 文件,但出现错误:

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

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

【问题讨论】:

    标签: c# fmod


    【解决方案1】:

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

    【讨论】:

    • 是的,FMOD SDK 提供了 C# 包装器来处理 P/Invoke。只是为了澄清它位于 \api\csharp
    【解决方案2】:

    试试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();
    }
    

    【讨论】:

    • 为了让它工作,我必须手动将 fmodex.dll 复制到它在项目根目录中构建后创建的 bin 文件夹中。
    • 自从我从事这个项目以来已经很长时间了。有一些更高级的功能没有实现,如果你需要其中的一些,你可以在实现它们后发送提交来帮助我。当我有更多空闲时间时,我应该为此发送一些更新。我希望它可以帮助您开发您的项目。
    • 他们似乎已将其删除。
    • 忘记更新链接了。现在在github.com/madrang/FmodSharp 但我还没有时间更新它以使用最新的 FMod 版本。我应该在某个时候这样做.....
    【解决方案3】:

    为了在 C# 中使用 FMOD,您需要使用 p/Invoke 包装 FMOD 函数和结构。这个任务已经在开源项目fmodnet为你代劳了

    【讨论】:

    • 我认为 fmodnet 项目已经过时了,我建议坚持使用 FMOD SDK 提供的 C# 包装器。
    • 距离我上次使用它已经有一段时间了。所以你可能是对的,使用 FMOD 提供的应该会更好。
    • 它也不起作用。 Visual Studio 报告它缺少 FMDOnet 参考,并且它不在下载的 zip 文件中。
    • @Matthew Lock 你知道这个答案已经 3 岁了……对吧?
    • 当然可以,但总得有人说这对帮助别人没有用。
    【解决方案4】:

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

    • 注册 COM

    • 选择“添加参考”

    • 选择 COM 选项卡

    • 浏览到项目并选择它。

    您应该看到(在构建之后)VS 在您的 BIN 目录中创建了一个 Interopt DLL 库。

    【讨论】:

    • @yms - 正如你所说;这个问题暗示他正在尝试添加一个 COM,我对 FMOD 并不了解。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    • 1970-01-01
    • 1970-01-01
    • 2011-03-13
    • 2017-06-10
    相关资源
    最近更新 更多