使用FMOD进行C#开发?

7
我正在使用C#中的FMOD。我尝试通过选择项目->添加引用并浏览fmodex.dll文件来导入它,但是出现错误:

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

它是可访问的,但我仍然收到错误提示。我阅读了指南,指南上说在链接到fmodex.dll文件时要使用fmodex_vc.lib。所以我尝试了一下,但是我似乎找不到在Visual Studio中如何链接到.lib文件的方法;在Google上搜索总是会导致链接到.dll文件。
4个回答

7

Fmod是用非托管C++编写的,因此您无法直接从.Net应用程序中引用它。如果我没有记错,fmod包中有一个名为“fmod_wrapper”的目录中的c#包装器可以添加到您的项目中,它将处理P/Invoking。


2
是的,C#包装器已经随FMOD SDK提供,用于处理P/Invoke。只是为了澄清,它位于<安装目录>\api\csharp。 - Mathew Block

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文件夹中。 - Matthew Lock
1
我已经很久没有在这个项目上工作了。一些更高级的功能还没有实现,如果你需要其中的一些,你可以通过实现它们来帮助我发送一个提交。当我有更多的空闲时间时,我应该会为此发送一些更新。 我希望这能帮助你开发你的项目。 - madrang
他们似乎已经将其删除了。 - John Lord
忘记更新链接了。现在在 https://github.com/madrang/FmodSharp。 但我还没有时间将其更新以与最新的 FMod 版本兼容。 我应该在某个时间点进行更新..... - madrang

1
为在 C# 中使用 FMOD,你需要使用 P/Invoke 包装 FMOD 函数和结构。这项任务已经通过开源项目 fmodnet 为您处理了。

1
我认为fmodnet项目已经相当过时了,我建议使用FMOD SDK提供的C#包装器。 - Mathew Block
自从上次使用它以来已经有一段时间了。所以你可能是对的,使用FMOD提供的那个应该会更好。 - yms
它也不起作用。Visual Studio 报告缺少 FMDOnet 引用,而且在下载的 zip 文件中也找不到它。 - Matthew Lock
@Matthew Lock 你意识到这个答案已经三年了吗? - yms
当然,但有人必须说它不起作用以帮助其他人。 - Matthew Lock

-1

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

  • 注册COM

  • 选择“添加引用”

  • 选择COM选项卡

  • 浏览到项目并选择它。

构建后,您应该会看到VS在BIN目录中创建了一个Interop DLL库。


@yms - 正如你所说的那样;这个问题暗示他正在尝试添加一个COM,我对FMOD没有特别的了解。 - Hogan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接