问题
I'm working with FMOD in C#. I've tried importing the fmodex.dll
file by selecting Project->Add Reference and browsing for the fmodex.dll
, but I am getting an error:
A reference to ... could not be added. Please make sure that the file is accessible, and that it is a valid assembly or COM component
It is accessible, but I still get the error. I read the guide and it says to use the fmodex_vc.lib
when linking to the fmodex.dll
file. So I try, but I can't seem to find on how to link to .lib files in Visual Studio; searching Google always leads me to linking to .dll files.
回答1:
Fmod is written in unmanaged C++ so you cannot reference it directly from a .Net application. There is a c# wrapper to the fmodex.dll in the fmod package under a directory called "fmod_wrapper" if I am not mistaken that you can add to your project and which will take care of making the P/Invoking for you.
回答2:
Try https://github.com/madrang/FmodSharp been working for a little while on it. It should be better than the current Fmod wrapper.
Instead of using Handles and coding like you are using C++ in C#. The FmodSharp wrapper is object oriented and there is no need to think about using handles.
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();
}
回答3:
In order to use FMOD in C# you need to wrap FMOD functions and structures using p/Invoke. This task has been taken care of for you in the open source project fmodnet
回答4:
To add a COM item to a VS project perform the following steps:
Register the COM
Select "Add Reference"
Select COM tab
Browse to item and select it.
You should see (after a build) that VS has created an Interopt DLL library in your BIN dir.
来源:https://stackoverflow.com/questions/6020196/using-fmod-for-c