在研究了nokia官方提供的sound mixer例子后,发现其提供的方法使用起来不是很方便,比如例子中的wav文件好像只是扩展名是wav,并不是一般见到的win上的wav,内容只是一些sound的data没有像win上wav的一些必要格式(因为用wmp无法识别这种wav),但基本的混音作法已经基本掌握了。
由于自己写的mixer感觉不是很方便,于是又找到了3rd lib hss(http://www.shlzero.com/)研究,发现虽然它提供了wins的lib和dll但好像不是针对s60 3rd版的,虽然编译连接都可以通过,但在emulator上运行测试的时候会发现无法启动程序,报system error (-2)的错误。
而用gcce的dso和dll打包后传到真机上则可以运行,所以怀疑是虽然都是wins但2nd和3rd的格式也有所变化,所以导致不兼容的情况发生,程序根本无法加载hss.dll启动。
由于非捐赠者无法获得hss的source和static lib,所以在打包发布的时候需要带上hss.dll,而由于一些其他程序,如用edge的一些游戏同样也用了hss所以如果直接将dll的安装路径设为和exe同级的话会出现安装时的更新错误导致安装失败,目前我只是不把hss.dll打包,这样可以不出现这个问题,但不知道会不会由于build时的dll和那些雍熙用的dll版本是不是一样而导致问题。
但程序确实在hssSpeaker.open()时正确的处理了,只是由于一些2nd和3rd的程序结构区别,导致hssMusic的load好像找不到需要加载的mod(直接照搬example的代码),这个正在研究中…
博主友情提示:
如您在评论中需要提及如QQ号、电子邮件地址或其他隐私敏感信息,欢迎使用>>博主专用加密工具v3<<处理后发布,原文只有博主可以看到。
请问 你如何实现 从 File System 读取 mod 文件的?
我现在 在 windows mobile 模拟器上尝试 Hekkus sound system.
HSS_API_C s32 hssMusic::load( const _TCHAR * modname, u32 flags = 0 )
我的代码:
if(music.load(“ars.mod”, true) == HSS_OK)
puts (“ok”);
else
puts (“no”);
mod 文件和 exe 是同一个目录下的
单打印的结果一直是 no.
多谢
这个你试试传完整路径看能不能通过,先用GetModuleFileName取到exe的路径,然后生成mod的完整路径当参数传过去试试。
还是不行,通过Resource.rc 来读取也不行。怪
那你自己用fopen,fread试试能成功打开你的mod文件么?可以的话用rb模式读取所有文件内容到内存,然后用load的内存加载版本试试能ok么?