〖求助〗版主能否帮助回答一下多媒体编程的问题

我想在程序中播放一些声音,于是参考了QNX的帮助,并试图编译它的一个例子程序。参见/Multimedia Developer’s Guide (6.2.1) /using graphs中的example 4,play mp3。可是在编译时
qcc -V gcc_ntox86 playmp3.c会出现许多关于其中多媒体函数的错误。我又搜索帮助的其他内容,试图改成
qcc -l media -V gcc_ntox86 playmp3.c
依然有多媒体函数的错误。请教应该如何编译调用多媒体函数的程序?
另外,关于qcc -l后可以增加的库函数都是如何定义的,例如media或mmedia就可以用,而如果改成扩展名为.so的共享库,编译就会报错,说找不到库文件。
谢谢指教!

qcc -Vgcc_ntox86 -o playmp3 playmp3.c -lmmedia -laoi

唐先生真是太有大侠风范,这么晚还帮助回答我们这些新手的问题,感激不尽!

感谢唐先生的帮助,可是我按照帮助编译后,还是有一个错误:
/tmp/AAA506795_cc.o(.text+0x32): undefined reference to `MmInitialize’
把QNX的帮助又仔细看了好几遍,仍然百思不得其解。请帮帮忙,谢谢!

感谢唐先生的帮助,可是我按照帮助编译后,还是有一个错误:
/tmp/AAA506795_cc.o(.text+0x32): undefined reference to `MmInitialize’
把QNX的帮助又仔细看了好几遍,仍然百思不得其解。请帮帮忙,谢谢!

手头没有6.2.1的系统,不能直接测。但是,MmInitialize 应该在 libmmedia 里面。
做一个 objdump -d /usr/lib/libmmedia.a >/tmp/mmedia.txt,然后看看你的lib里有没有这个MmInitialize?

还有一种可能,可以试试把两个库的次序倒一下。

qcc -Vgcc_ntox86 -o playmp3 playmp3.c -laio -lmmedia

感谢唐先生的再次帮助,可是无论怎样也出不来,顺序改变也不行。而且在使用查看链接库的命令后发现有MmInitialize函数,可是编译错误依旧。在其他QNX的机器上试验此程序,错误提示相同。这究竟是怎么回事呢?

经过比较,我发现在/usr/lib下有libmmedia.a, libmmedia.so ,libmmedia.so.1,而使用objdump -d对两个.so文件分析后发现没有MmInitialize,是不是这个原因呢?
如果按照此编译方法调用的是.so库而不是.a库?

我把libmmedia.a改成libmmedia_a.a后重新编译:
qcc -Vgcc_ntox86 -oplaymp3 playmp3.c -lmmedia_a -laoi
就对了。只是觉得很迷惑,如何区分调用相同名称的静态库(.a)和共享库(.so)呢?
就象这次碰到的问题一样?

找到了ld的帮助,修改编译指令如下:
qcc -Vgcc_ntox86 -o playmp3 playmp3.c -static -lmmedia -Bdynamic -laoi。
终于弄明白了。
谢谢唐先生的帮助,使我学会了objdump和ld命令的使用方法。