#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 конкретно.