嵌入资源的文件路径?

File path of embedded resource?

我有一些代码可以通过 DLL 播放 WAV 文件。它通过指向目录路径播放它,但我想将它包含在我的 EXE 中。所以,我把它作为一种资源。问题是,如何正确指向它?

UInt32 stream = BASS.BASS_StreamCreateFile(Properties.Resources.MYWAVFILE, 0, 0, BASSFlag.BASS_DEFAULT | BASSFlag.BASS_SAMPLE_LOOP);

原代码是这样的:

UInt32 stream = BASS.BASS_StreamCreateFile(@"C:\MYWAVFILE.WAV", 0, 0, BASSFlag.BASS_DEFAULT | BASSFlag.BASS_SAMPLE_LOOP);

你可以看到第一个参数是我需要放的地方。然而,编译器抱怨这个错误:

严重性代码说明项目文件行抑制状态 错误 CS1503 参数 1:无法从 'System.IO.UnmanagedMemoryStream' 转换为 'string' MyProgram C:\Users\LOLCATS\Documents\Visual Studio 2015\Projects\MyProgram\MyProgram\Form1.cs 30 Active

谢谢。

Properties.Resources.MYWAVFILE 不是路径字符串。它表示存储在内存中的文件,因此它是 System.IO.UnmanagedMemoryStream

要么找到一个重载函数,它接收流而不是 string 形式的文件路径,要么将嵌入式资源复制到磁盘并使用它:

using (var fileStream = File.Create("C:\Path\To\File"))
{
  Properties.Resources.MYWAVFILE.CopyTo(fileStream);
}