Используете FMOD для С#?

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

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

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


person user488792    schedule 16.05.2011    source источник


Ответы (4)


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

person jeremy-george    schedule 16.05.2011
comment
Да, оболочка C# поставляется с FMOD SDK для обработки P/Invoke. Просто уточню, что он находится в ‹install dir›\api\csharp - person Mathew Block; 17.05.2011

Попробуйте 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();
}
person madrang    schedule 12.12.2011
comment
Хорошо, чтобы заставить это работать, мне пришлось вручную скопировать fmodex.dll в папку bin, которую он создает после сборки в корне проекта. - person Matthew Lock; 18.04.2014
comment
Прошло много времени с тех пор, как я работал над этим проектом. Есть некоторые из более продвинутых функций, которые не реализованы, если вам нужны какие-то из них, вы всегда можете мне помочь, отправив коммит после их реализации. Когда у меня будет больше свободного времени, я должен отправить несколько обновлений для этого. Надеюсь, это поможет вам в развитии вашего проекта. - person madrang; 18.04.2014
comment
вроде убрали. - person John Lord; 09.01.2019
comment
Забыл обновить ссылку. Теперь на github.com/madrang/FmodSharp, но у меня не было времени обновить его для работы с последняя версия FMod. Я должен сделать это в какой-то момент..... - person madrang; 09.01.2019

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

person yms    schedule 16.05.2011
comment
Я считаю, что проект fmodnet сильно устарел, я бы рекомендовал придерживаться оболочки C#, поставляемой с FMOD SDK. - person Mathew Block; 17.05.2011
comment
Прошло много времени с тех пор, как я в последний раз использовал его. Так что вы, вероятно, правы, и лучше использовать тот, который поставляется с FMOD. - person yms; 17.05.2011
comment
Это тоже не работает. Visual Studio сообщает, что отсутствует ссылка на FMDOnet, и ее нет в загруженном zip-файле. - person Matthew Lock; 18.04.2014
comment
@ Мэтью Лок Вы понимаете, что этому ответу 3 года ... верно? - person yms; 18.04.2014
comment
Конечно, но кто-то должен сказать, что это не работает, чтобы помочь другим. - person Matthew Lock; 19.04.2014

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

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

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

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

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

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

person Hogan    schedule 16.05.2011
comment
@yms - как вы говорите; вопрос подразумевал, что он пытался добавить COM, я не знаю конкретно о FMOD. - person Hogan; 16.05.2011