C++ 无法在Visual Studio中生成QtMock

C++ 无法在Visual Studio中生成QtMock,c++,qt,qnetworkaccessmanager,linker-errors,C++,Qt,Qnetworkaccessmanager,Linker Errors,刚刚下载,因为我非常需要模仿QNetworkAccessManager 我能够使用Qt4.7.4在QtCreator 2.3.1中构建qtmock.pro。所有的测试都正常运行,我非常兴奋 然后,我必须使用VisualStudio构建它,以便能够使用我的项目库及其所有依赖项。我在VisualStudio2010 pro中使用Qt4.8。我导入了主qtmock.pro,首先我尝试构建只包含框架的底层qtmock项目(没有测试或其他内容)。它构建得很好,我得到了一个.lib和.dll文件。然后我尝试

刚刚下载,因为我非常需要模仿QNetworkAccessManager

我能够使用Qt4.7.4在QtCreator 2.3.1中构建qtmock.pro。所有的测试都正常运行,我非常兴奋

然后,我必须使用VisualStudio构建它,以便能够使用我的项目库及其所有依赖项。我在VisualStudio2010 pro中使用Qt4.8。我导入了主qtmock.pro,首先我尝试构建只包含框架的底层qtmock项目(没有测试或其他内容)。它构建得很好,我得到了一个.lib和.dll文件。然后我尝试构建qtnetworkstub.pro,其中QNetwork的所有模拟对象都是我的项目所需要的。以下是我的生成命令行:

/输出:“…\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 /清单文件:“Win32\qtnetworkmock.dll.intermediate.manifest” /ALLOWISOLATION/MANIFESTUAC:“level='asInvoker'uiAccess='false'” /调试/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" (?staticMetaObject@QAbstractSocket@@2UQMetaObject@@B) referenced in function "public: __thiscall QNetworkRequest::~QNetworkRequest(void)" (??1QNetworkRequest@@QAE@XZ) 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" (?staticMetaObject@QTcpSocket@@2UQMetaObject@@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" (?staticMetaObject@QTcpSocket@@2UQMetaObject@@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" (?staticMetaObject@QSslSocket@@2UQMetaObject@@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" (?staticMetaObject@QSslSocket@@2UQMetaObject@@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" (?staticMetaObject@QAbstractSocket@@2UQMetaObject@@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" (?staticMetaObject@QAbstractSocket@@2UQMetaObject@@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" (?staticMetaObject@QAbstractSocket@@2UQMetaObject@@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
我不明白的是:我没有使用任何这些对象,它们在该项目的任何地方都没有引用。所有这些都是从QIODevice继承的,但我不太确定这会有多大帮助


我陷入了困境,我非常感谢任何帮助,因为我真的很想使用这个框架(它对于单元测试来说似乎非常棒!)

显然,这是QTMock和Qt 4.8的问题,与visual studio无关。当前可用的QtMock版本不适用于4.8(仅适用于4.7或更低版本),但将很快修复