• 12151阅读
  • 7回复

编译qt 4.8.4提示缺少webcore.lib [复制链接]

上一主题 下一主题
离线ztz0223
 

只看楼主 倒序阅读 楼主  发表于: 2013-05-09
问题描述如下:
在开启webkit配置之后,编译QtWebKit.lib的时候有一堆提示:
JSFileEntrySync.obj : warning LNK4221: no public symbols found; archive member will be inaccessible
JSFileEntry.obj : warning LNK4221: no public symbols found; archive member will be inaccessible
JSFileCallback.obj : warning LNK4221: no public symbols found; archive member will be inaccessible
JSErrorCallback.obj : warning LNK4221: no public symbols found; archive member will be inaccessible
JSEntrySync.obj : warning LNK4221: no public symbols found; archive member will be inaccessible
JSEntryCallback.obj : warning LNK4221: no public symbols found; archive member will be inaccessible
JSEntryArraySync.obj : warning LNK4221: no public symbols found; archive member will be inaccessible
JSEntryArray.obj : warning LNK4221: no public symbols found; archive member will be inaccessible
JSEntry.obj : warning LNK4221: no public symbols found; archive member will be inaccessible
JSEntriesCallback.obj : warning LNK4221: no public symbols found; archive member will be inaccessible
JSDOMFileSystemSync.obj : warning LNK4221: no public symbols found; archive member will be inaccessible
JSDOMFileSystem.obj : warning LNK4221: no public symbols found; archive member will be inaccessible
JSDirectoryReaderSync.obj : warning LNK4221: no public symbols found; archive member will be inaccessible
JSDirectoryReader.obj : warning LNK4221: no public symbols found; archive member will be inaccessible
JSDirectoryEntrySync.obj : warning LNK4221: no public symbols found; archive member will be inaccessible
JSDirectoryEntry.obj : warning LNK4221: no public symbols found; archive member will be inaccessible
JSDeviceOrientationEvent.obj : warning LNK4221: no public symbols found; archive member will be inaccessible
JSDeviceMotionEvent.obj : warning LNK4221: no public symbols found; archive member will be inaccessible
JSDataTransferItems.obj : warning LNK4221: no public symbols found; archive member will be inaccessible
JSDataTransferItem.obj : warning LNK4221: no public symbols found; archive member will be inaccessible
MathMLElementFactory.obj : warning LNK4221: no public symbols found; archive member will be inaccessible

这些提示,主要是因为这些cpp里面,被一些预编译宏给否定了,也即是不会编译,编译器才会提示这些没有符号的warning。
比如JSDataTransferItem.cpp文件:
  1. #if ENABLE(DATA_TRANSFER_ITEMS)
  2. #include "JSDataTransferItem.h"
  3. #include "Blob.h"
  4. #include "DataTransferItem.h"
  5. #include "ExceptionCode.
#if ENABLE(DATA_TRANSFER_ITEMS) 就是false的,而实际上ENABLE(DATA_TRANSFER_ITEMS)就是宏ENABLE_DATA_TRANSFER_ITEMS,在对应的makefile里面指定了-DENABLE_DATA_TRANSFER_ITEMS=0


E:\Qt_compl\qt-src-4.8.4\src\3rdparty\webkit\Source\WebKit\qt\tests\qwebframe提示:

qrc_tst_qwebframe.cpp
        link /LIBPATH:"e:\Qt_compl\qt-src-4.8.4_test\lib" /LIBPATH:"e:\Qt_compl\qt-src-4.8.4_test\lib" /NOLOGO /DYNAMICBASE /
NXCOMPAT /INCREMENTAL:NO /SUBSYSTEM:CONSOLE "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' versio
n='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /MANIFEST /MANIFESTFILE:"tmp\obj\releas
e_static\tst_qwebframe.intermediate.manifest" /OUT:release\tst_qwebframe.exe @C:\Users\ADMINI~1\AppData\Local\Temp\nmEF23.tmp
LINK : fatal error LNK1181: cannot open input file '../../WebCore/release\webcore.lib'
NMAKE : fatal error U1077: '"d:\Program Files\Microsoft Visual Studio 9.0\VC\Bin\link.EXE"' : return code '0x49d'

这个还好解决,就是makefile指定的webcore.lib路径不对,应该倒退路径4次,但是指定正确的路径之后,就会出现一堆的链接错误说QtWebKit.lib里面的符号未定义。

根本原因估计就是上面的那些文件的预编译之后成了空文件,请问如何把这个问题解决?
离线ztz0223

只看该作者 1楼 发表于: 2013-05-09

我使用的configure参数:
configure -debug-and-release -fast -static  -qt-sql-sqlite -qt-zlib -declarative -webkit -qt-style-windowsvista -qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg  -nomake demos -nomake examples -nomake docs
离线roywillow

只看该作者 2楼 发表于: 2013-05-10
Qt4的webkit不支持静态编译
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线ztz0223

只看该作者 3楼 发表于: 2013-05-11
回 2楼(roywillow) 的帖子
无语,不支持静态编译,那我还编个什么劲?直接用官方的包就好了嘛。。。
离线roywillow

只看该作者 4楼 发表于: 2013-05-11
回 3楼(ztz0223) 的帖子
至少qt4的时候我看到了官方表示qtwebkit放弃静态编译的支持
至于现在如何了,还不清楚
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线ztz0223

只看该作者 5楼 发表于: 2013-05-12
回 4楼(roywillow) 的帖子
好吧,那谢谢啦

那么qt5支持静态编译webkit么?
离线roywillow

只看该作者 6楼 发表于: 2013-05-12
回 5楼(ztz0223) 的帖子
Qt5.1说支持静态连接,但没明确说明webkit是不是也在其中
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线cavendish

只看该作者 7楼 发表于: 2013-05-12
快速回复
限100 字节
 
上一个 下一个