嵌入资源的文件路径?

时间:2016-09-11 12:48:07

标签: c# visual-studio resources

我有一些代码通过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'到'字符串' MyProgram C:\ Users \ LOLCATS \ Documents \ Visual Studio 2015 \ Projects \ MyProgram \ MyProgram \ Form1.cs 30 Active

感谢。

1 个答案:

答案 0 :(得分:1)

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

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

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