7

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

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

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

4

4 回答 4

7

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

于 2011-05-16T16:25:51.730 回答
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();
}
于 2011-12-12T04:46:14.550 回答
1

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

于 2011-05-16T16:26:52.320 回答
-1

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

  • 注册 COM

  • 选择“添加参考”

  • 选择 COM 选项卡

  • 浏览到项目并选择它。

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

于 2011-05-16T16:20:53.047 回答