我有一些代码通过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
感谢。
答案 0 :(得分:1)
Properties.Resources.MYWAVFILE
不是路径字符串。它是存储在内存中的文件的表示,因此它是System.IO.UnmanagedMemoryStream
。
找到一个重载函数,它接受流而不是string
形式的文件路径,或者将嵌入式资源复制到磁盘并使用它:
using (var fileStream = File.Create("C:\\Path\\To\\File"))
{
Properties.Resources.MYWAVFILE.CopyTo(fileStream);
}