之前的程序是用VC8开发的,网络部分使用了ACE,现在想迁移到Qt上,但网络部分仍想使用原来的ACE。
Qt已用自带的mingw编译,Qt版本为2009.01。
准备用同一个mingw来编译ACE,后者版本为5.6.1,ACE_wrappers\include\makeinclude\platform_macros.GNU内容如下:
- qt=1
- include $(ACE_ROOT)/include/makeinclude/platform_mingw32.GNU
然后在make的时候出了问题(ACE_ROOT和QTDIR都已经export),最后一段有问题的输出如下:
- GNUmakefile: /d/ACE_wrappers/ace/GNUmakefile.ACE_QtReactor
- rm -f .shobj//libACE_QtReactor.dll.def.old .shobj//libACE_QtReactor.dll.def; dlltool --export-all --output-def .shobj//libACE_QtReactor.dll.def --dllname libACE_QtReactor.dll .shobj/QtReactor/QtReactor_moc.o .shobj/QtReactor/QtReactor.o && mv .shobj//libACE_QtReactor.dll.def .shobj//libACE_QtReactor.dll.def.old && sed 's/;.*$//g' < .shobj//libACE_QtReactor.dll.def.old > .shobj//libACE_QtReactor.dll.def && g++ -mtune=pentiumpro -I/d/ACE_wrappers -DACE_HAS_EXCEPTIONS -DACE_NO_INLINE -I.. -I/d/Qt/2009.01/qt/include -DQT_THREAD_SUPPORT -DACE_QTREACTOR_BUILD_DLL -Wl,--enable-auto-image-base -Wl,--out-implib,libACE_QtReactor.dll.a -shared -o libACE_QtReactor.dll -Wl,--enable-auto-import -Wl,-E -L/d/ACE_wrappers/ace -L./ -L../lib -L. -L../lib -L/d/Qt/2009.01/qt/lib -Wl,.shobj//libACE_QtReactor.dll.def .shobj/QtReactor/QtReactor_moc.o .shobj/QtReactor/QtReactor.o -lACE -lqt -lws2_32 -lmswsock -lwsock32 -lnetapi32
- d:\qt\2009.01\mingw\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe: cannot find -lqt
- collect2: ld returned 1 exit status
- make[1]: *** [libACE_QtReactor.dll] Error 1
- make[1]: Leaving directory `/d/ACE_wrappers/ace'
- make: *** [ACE_QtReactor] Error 2
另外,本来是提示的cannot find -lqt-mt,后来看到说新版本qt不再使用-mt这种形式,就修改了ACE_wrappers\ace\GNUmakefile.ACE_QtReactor中的下面一行:
ACE_SHLIBS = -lACE -lqt-mt$(QT_VERSION)
将-mt给删除掉了,然后再make时错误信息就变成上面帖出来的那些了,问题依旧。
Qt新手,大家帮忙看看问题到底是在哪里?