作者os653 (allstar)
看板C_and_CPP
标题[问题] 有关 SDK, QT, DLL, Phonon 的问题
时间Sat Mar 7 17:10:30 2009
我知道这种东西应该自己去找资料才对
不过现在比较没时间,而且已经有了暂时性的白痴解决方法
所以斗胆到这边 PO 文寻求答案
等我弄完这些会乖乖回头找答案的
还请各位帮忙解答 o(〒﹏〒)o
主要问题有:
1. Window SDK 所附的 CMD Shell 是不是只有设定一些变数?
2. 不同的 Compiler 所编译出的 DLL 是不是不通用?
3. qmake 有没有参数可以选择要产生哪个 Compiler 的 makefile?
4. qmake 产生出 MS Compiler 所用的 makefile 时,
有没有办法让错误讯息印到 console 上?
问题发生的原因:
打算写程式能读取及拨放 mp3 档案
因为赶时间的关系,打算用 QT 来写
经搜寻资料後,得知可使用 Phonon 完成此项工作
但是 Phonon 不是一开始 QT 就帮你编译好的
似乎由於需要仰赖各平台的某些东西 (在 win32 是 DirectX & Direct Show)
需要自己重新编译
经过自己一番胡搞瞎搞
发现只有在 Windows SDK 所附的 CMD Shell 下才能正常编译 Phonon 套件
所以有了问题 1 的出现
我是有开过该 CMD Shell 的程式档,不过看不太懂 orz
从注解跟看的懂的部分判断似乎是只有定义一些变数,不过不是很确定
接下来编译好後,实际去尝试编译可以播放 mp3 档案的程式
结果发现 qmake 似乎也被重新编译过
产生出的 makefile 只能给 VC 的 nmake 吃
而不能给 QT 本来用的 mingw32-make 吃
似乎需要更改 QMAKESPEC 这个变数?一时找不太到相关资料
所以有了问题 3 的出现
丢给 nmake 吃後成功跑出可以执行的程式且执行成功
但是如果编译过程有问题,错误讯息不会显示
所以有了问题 4 的出现
编译出给 nmake 吃的 code 大概像这样
{.}.cpp{release\}.obj::
$(CXX) -c $(CXXFLAGS) $(INCPATH) -Forelease\ @<<
$<
<<
个人推测那个 @<< 应该是把错误讯息重新导向到 VC 的视窗里
可是我现在是在用 CMD shell 编译阿 orz ...
是因为这样所以没有显示错误讯息吗?
如果是的话,有办法在 qmake 产生 makefile 的时候
就叫他将错误讯息印到 CMD shell 上吗?
最後
所有配件都能动了,想要开始写的时候
打开 QT 的参考资料 (QT 把参考资料写成一个程式,叫 QT Assistant)
结果 ... 结果他不会动了 ...
冒出一个错误视窗
无法找到程序输入点?insert@QListData@@QAEPAPAXH@Z(在动态联结程式库QTCore4.dll)
个人推测是因为编译 Phonon 套件时,连 QTCore4.dll 也一起重新编译过了
重新编译时用的是 nmake
因此原来编译好的 QT Assistant 执行档就找不到函式了
阿没有参考资料我要怎麽写程式 orz ...
因此有了问题 2 的产生
本来以为 DLL 是平台相关的,Win32 平台上编译出的应该都一样
现在看来好像是编译器相关的?
最後非常蠢的做法是再灌一套 QT
程式码先把有关 Phonon 的部分注解掉,用新灌的 QT 编译
编译过没问题了,再把注解掉的部分取消掉
用可以编译 Phonon 的套件来编译
虽然很蠢,但是还能动啦 ... 反正只在自己的电脑上跑
不过如果换到别台电脑上跑,不就也会出现 DLL 无法找到程序出入点的问题吗?
虽然用 static link 大概可以过关,不过总感觉哪边不对劲
最後的最後,再把问题重贴一次,请各位帮忙
1. Window SDK 所附的 CMD Shell 是不是只有设定一些变数?
2. 不同的 Compiler 所编译出的 DLL 是不是不通用?
3. qmake 有没有参数可以选择要产生哪个 Compiler 的 makefile?
4. qmake 产生出 MS Compiler 所用的 makefile 时,
有没有办法让错误讯息印到 console 上?
以後我会用功一点的 ...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.170.12.156