Использование FMOD для C #?

#c# #fmod

#c# #fmod

Вопрос:

Я работаю с FMOD в C #. Я попытался импортировать fmodex.dll файл, выбрав Project-> Add Reference и выполнив поиск fmodex.dll , но я получаю сообщение об ошибке:

Ссылка на … не удалось добавить. Пожалуйста, убедитесь, что файл доступен и что это допустимая сборка или COM-компонент

Он доступен, но я все еще получаю сообщение об ошибке. Я прочитал руководство, и там сказано использовать fmodex_vc.lib при ссылке на fmodex.dll файл. Итак, я пытаюсь, но, похоже, не могу найти, как связать.lib-файлы в Visual Studio; поиск в Google всегда приводит меня к ссылке на .файлы dll.

Ответ №1:

Fmod написан на неуправляемом C , поэтому вы не можете ссылаться на него непосредственно из a .Сетевое приложение. Существует оболочка c # для fmodex.dll в пакете fmod в каталоге с именем «fmod_wrapper», если я не ошибаюсь, который вы можете добавить в свой проект и который позаботится о создании P / Invoking для вас.

Комментарии:

1. Да, оболочка C # поставляется вместе с FMOD SDK для обработки 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();
}
  

Комментарии:

1. Хорошо, чтобы заставить это работать, мне пришлось вручную скопировать fmodex.dll в папку bin, которую он создает после сборки в корне проекта.

2. Прошло много времени с тех пор, как я работал над этим проектом. Есть некоторые из более продвинутых функций, которые не реализованы, если вам нужны некоторые из них, вы всегда можете мне помочь, отправив коммит после их реализации. Когда у меня будет больше свободного времени, я должен отправить несколько обновлений для этого. Я надеюсь, это поможет вам развивать ваш проект.

3. похоже, они его удалили.

4. Забыл обновить ссылку. Сейчас в github.com/madrang/FmodSharp Но у меня не было времени обновить его для работы с последней версией FMod. Я должен сделать это в какой-то момент…..

Ответ №3:

Чтобы использовать FMOD в C #, вам необходимо обернуть функции и структуры FMOD с помощью p / Invoke. Об этой задаче позаботились за вас в проекте с открытым исходным кодом fmodnet

Комментарии:

1. Я считаю, что проект fmodnet довольно устарел, я бы рекомендовал придерживаться оболочки C #, поставляемой с FMOD SDK.

2. Прошло много времени с тех пор, как я в последний раз им пользовался. Итак, вы, вероятно, правы, и использование того, что поставляется с FMOD, должно быть лучше.

3. Это тоже не работает. Visual Studio сообщает, что в нем отсутствует ссылка на FMDOnet, и ее нет в загруженном zip-файле.

4. @Matthew Lock Ты же понимаешь, что этому ответу 3 года … верно?

5. Конечно, но кто-то должен сказать, что это не помогает другим.

Ответ №4:

Чтобы добавить COM-элемент в VS-проект, выполните следующие шаги:

  • Зарегистрируйте COM

  • Выберите «Добавить ссылку»

  • Выберите вкладку COM

  • Перейдите к элементу и выберите его.

Вы должны увидеть (после сборки), что VS создала библиотеку Interopt DLL в вашем каталоге BIN.

Комментарии:

1. @yms — как вы говорите; вопрос подразумевал, что он пытался добавить COM, я ничего не знаю о FMOD конкретно.