我在C#中使用FMOD。我已尝试通过选择项目 - >添加参考并浏览fmodex.dll
来导入fmodex.dll
文件,但我收到错误消息:
无法添加对...的引用。请确保该文件是可访问的,并且它是有效的程序集或COM组件
可以访问,但我仍然收到错误。我阅读了指南,并说它在链接到fmodex_vc.lib
文件时使用fmodex.dll
。所以我尝试,但我似乎无法找到如何链接到Visual Studio中的.lib文件;搜索Google总是引导我链接到.dll文件。
答案 0 :(得分:7)
Fmod是用非托管C ++编写的,因此您无法直接从.Net应用程序中引用它。如果我没有记错你可以添加到你的项目中并且将负责为你做P / Invoking,那么在fmod包中的fmodex.dll下有一个名为“fmod_wrapper”的ac#wrapper。
答案 1 :(得分:2)
尝试https://github.com/madrang/FmodSharp已经工作了一段时间。它应该比当前的Fmod包装更好。
而不是像在C#中使用C ++那样使用Handles和编码。 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();
}
答案 2 :(得分:1)
为了在C#中使用FMOD,您需要使用p / Invoke包装FMOD函数和结构。在开源项目fmodnet
中已经为您完成了此任务答案 3 :(得分:-1)
要将COM项添加到VS项目,请执行以下步骤:
注册COM
选择“添加参考”
选择COM标签
浏览到项目并选择它。
你应该看到(在构建之后)VS在你的BIN目录中创建了一个Interopt DLL库。