剛剛下載https://qt.gitorious.org/~niandong/qt/niandongs-qttools/commits/qtmock,因爲我迫切需要嘲笑QNetworkAccessManager。無法在Visual Studio中建立QtMock
我能夠使用Qt 4.7.4在QtCreator 2.3.1中構建qtmock.pro。所有的測試都按照他們的要求進行,我很快就退出了!
然後,我不得不使用visual studio構建它,以便能夠使用我的項目及其所有依賴項的庫。我在Visual Studio 2010 pro中使用Qt 4.8。我導入了主要的qtmock.pro,並首先嚐試構建僅包含框架的底層qtmock項目(不包括測試或任何其他項目)。它構建得很好,我有一個.lib和.dll文件。然後我嘗試構建qtnetworkstub.pro,其中QNetwork的所有模擬對象都是我需要的項目。以下是我的構建命令行:
/OUT:"......\lib\qtnetworkmock.dll" /NOLOGO /LIBPATH:"E:\QT\4.8.0\lib" /LIBPATH:"e:\QT\4.8.0\lib" /LIBPATH:"../../../lib" /DLL "../../../lib\qtmock.lib" "E:\QT\4.8.0\lib\QtTestd4.lib" "E:\QT\4.8.0\lib\QtCored4.lib" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /MANIFEST /ManifestFile:"Win32\qtnetworkmock.dll.intermediate.manifest" /ALLOWISOLATION /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"E:.Qt.UnitTest\qtmock\lib\qtnetworkmock.pdb" /PGD:"E:\src\Qt.UnitTest\qtmock\lib\qtnetworkmock.pgd" /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 /ERRORREPORT:QUEUE
我只使用testLib和Core。
然後我得到了以下林肯錯誤:
Error 4 error LNK2019: unresolved external symbol "public: static struct QMetaObject const QAbstractSocket::staticMetaObject" ([email protected]@@[email protected]@B) referenced in function "public: __thiscall QNetworkRequest::~QNetworkRequest(void)" ([email protected]@[email protected]) E:\src\Qt.UnitTest\qtmock\test\stublib\network\qnetworkrequest.obj qtnetworkstub
Error 5 error LNK2001: unresolved external symbol "public: static struct QMetaObject const QTcpSocket::staticMetaObject" ([email protected]@@[email protected]@B) E:\src\Qt.UnitTest\qtmock\test\stublib\network\qnetworkreply.obj qtnetworkstub
Error 6 error LNK2001: unresolved external symbol "public: static struct QMetaObject const QTcpSocket::staticMetaObject" ([email protected]@@[email protected]@B) E:\src\Qt.UnitTest\qtmock\test\stublib\network\qnetworkrequest.obj qtnetworkstub
Error 7 error LNK2001: unresolved external symbol "public: static struct QMetaObject const QSslSocket::staticMetaObject" ([email protected]@@[email protected]@B) E:\src\Qt.UnitTest\qtmock\test\stublib\network\qnetworkreply.obj qtnetworkstub
Error 8 error LNK2001: unresolved external symbol "public: static struct QMetaObject const QSslSocket::staticMetaObject" ([email protected]@@[email protected]@B) E:\src\Qt.UnitTest\qtmock\test\stublib\network\qnetworkrequest.obj qtnetworkstub
Error 1 error LNK2001: unresolved external symbol "public: static struct QMetaObject const QAbstractSocket::staticMetaObject" ([email protected]@@[email protected]@B) E:\src\Qt.UnitTest\qtmock\test\stublib\network\qnetworkaccessmanager.obj qtnetworkstub
Error 2 error LNK2001: unresolved external symbol "public: static struct QMetaObject const QAbstractSocket::staticMetaObject" ([email protected]@@[email protected]@B) E:\src\Qt.UnitTest\qtmock\test\stublib\network\qnetworkproxy.obj qtnetworkstub
Error 3 error LNK2001: unresolved external symbol "public: static struct QMetaObject const QAbstractSocket::staticMetaObject" ([email protected]@@[email protected]@B) E:\src\Qt.UnitTest\qtmock\test\stublib\network\qnetworkreply.obj qtnetworkstub
Error 9 error LNK1120: 3 unresolved externals E:\src\Qt.UnitTest\qtmock\lib\\qtnetworkmock.dll qtnetworkstub
,我不明白的事情是:我沒有使用任何這些對象,他們的arent在該項目中的任何地方refered。他們都從QIODevice繼承,但我不太清楚這會有多大幫助。
我extremy卡住,我希望得到任何幫助,因爲我真的想用這個框架(看來真的是偉大的單元測試!)