使用FMOD进行C#?

时间:2011-05-16 16:13:31

标签: c# fmod

我在C#中使用FMOD。我已尝试通过选择项目 - >添加参考并浏览fmodex.dll来导入fmodex.dll文件,但我收到错误消息:

  

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

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

4 个答案:

答案 0 :(得分:7)

Fmod是用非托管C ++编写的,因此您无法直接从.Net应用程序中引用它。如果我没有记错你可以添加到你的项目中并且将负责为你做P / Invoking,那么在fmod包中的fmodex.dll下有一个名为“fmod_wrapper”的ac#wrapper。

答案 1 :(得分:2)

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

而不是像在C#中使用C ++那样使用Handles和编码。 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();
}

答案 2 :(得分:1)

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

中已经为您完成了此任务

答案 3 :(得分:-1)

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

  • 注册COM

  • 选择“添加参考”

  • 选择COM标签

  • 浏览到项目并选择它。

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