qjsonrpc1.dll linking problems

166 views
Skip to first unread message

Luca Cavalli

unread,
Dec 17, 2014, 10:00:30 AM12/17/14
to qjsonrpc-d...@googlegroups.com
Dear QJsonRPC developer and users,

I'm trying to user QJsonRPC library compiled as a DLL on Windows with MS compiler from Visual Studio Express.

I compiled first QJsonRPC following the instructions on project web page and then installed from shell with nmake install (setting the PREFIX variable pointing to WINSAMPLE/LIBS, see attached zip).

Then I added the dependency to my .pro files with the Qt Creator menu entry "Add Library...".

In my sample project I have a generic class "ScoeComponent" implementing a remote method hartBeatRequest() and then several specific components (e.g. ScoeComponentLog) inmplementing additional remote methods.

My problem rises when I try to link compiled object files. I receive error:
LNK2001: unresolved external symbol "public: static struct QMetaObject const QJsonRpcService::staticMetaObject" (?staticMetaObject@QJsonRpcService@@2UQMetaObject@@B)

This is my first project under Qt/Windows (I'm a Linux developer), so it is highly likely I'm missing something obvious.

Thanks for your help,

Luca

This is the full compilation log from Qt Creator:
15:37:11: Running steps for project WINSAMPLE...
15:37:11: Configuration unchanged, skipping qmake step.
15:37:11: Starting: "C:\Qt\Qt5.4.0\Tools\QtCreator\bin\jom.exe"
    cd ScoeComponent\ && ( if not exist Makefile C:\Qt\Qt5.4.0\5.4\msvc2013_64\bin\qmake.exe C:\Users\Luca\Documents\QtProjects\WinSample\WINSAMPLE\ScoeComponent\ScoeComponent.pro -spec win32-msvc2013 CONFIG+=debug -o Makefile ) && C:\Qt\Qt5.4.0\Tools\QtCreator\bin\jom.exe -f Makefile
    C:\Qt\Qt5.4.0\Tools\QtCreator\bin\jom.exe -f Makefile.Debug
    cl -c -nologo -Zm200 -Zc:wchar_t -FS -Zi -MDd -GR -W3 -w34100 -w34189 -EHsc /Fddebug\ScoeComponent.pdb -DUNICODE -DWIN32 -DWIN64 -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I"..\..\..\LIBS\qjsonrpc\include" -I"C:\Qt\Qt5.4.0\5.4\msvc2013_64\include" -I"C:\Qt\Qt5.4.0\5.4\msvc2013_64\include\QtGui" -I"C:\Qt\Qt5.4.0\5.4\msvc2013_64\include\QtANGLE" -I"C:\Qt\Qt5.4.0\5.4\msvc2013_64\include\QtNetwork" -I"C:\Qt\Qt5.4.0\5.4\msvc2013_64\include\QtCore" -I"debug" -I"." -I"C:\Qt\Qt5.4.0\5.4\msvc2013_64\mkspecs\win32-msvc2013" -Fodebug\ @C:\Users\Luca\AppData\Local\Temp\ScoeComponentRpcService.obj.3384.15.jom
ScoeComponentRpcService.cpp
    C:\Qt\Qt5.4.0\5.4\msvc2013_64\bin\moc.exe -DUNICODE -DWIN32 -DWIN64 -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -D_MSC_VER=1800 -D_WIN32 -D_WIN64 -IC:/Qt/Qt5.4.0/5.4/msvc2013_64/mkspecs/win32-msvc2013 -IC:/Users/Luca/Documents/QtProjects/WinSample/WINSAMPLE/ScoeComponent -IC:/Users/Luca/Documents/QtProjects/WinSample/LIBS/qjsonrpc/include -IC:/Qt/Qt5.4.0/5.4/msvc2013_64/include -IC:/Qt/Qt5.4.0/5.4/msvc2013_64/include/QtGui -IC:/Qt/Qt5.4.0/5.4/msvc2013_64/include/QtANGLE -IC:/Qt/Qt5.4.0/5.4/msvc2013_64/include/QtNetwork -IC:/Qt/Qt5.4.0/5.4/msvc2013_64/include/QtCore -I. ..\..\..\WINSAMPLE\ScoeComponent\ScoeComponentRpcService.h -o debug\moc_ScoeComponentRpcService.cpp
    cl -c -nologo -Zm200 -Zc:wchar_t -FS -Zi -MDd -GR -W3 -w34100 -w34189 -EHsc /Fddebug\ScoeComponent.pdb -DUNICODE -DWIN32 -DWIN64 -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I"..\..\..\LIBS\qjsonrpc\include" -I"C:\Qt\Qt5.4.0\5.4\msvc2013_64\include" -I"C:\Qt\Qt5.4.0\5.4\msvc2013_64\include\QtGui" -I"C:\Qt\Qt5.4.0\5.4\msvc2013_64\include\QtANGLE" -I"C:\Qt\Qt5.4.0\5.4\msvc2013_64\include\QtNetwork" -I"C:\Qt\Qt5.4.0\5.4\msvc2013_64\include\QtCore" -I"debug" -I"." -I"C:\Qt\Qt5.4.0\5.4\msvc2013_64\mkspecs\win32-msvc2013" -Fodebug\ @C:\Users\Luca\AppData\Local\Temp\moc_ScoeComponentRpcService.obj.3384.187.jom
moc_ScoeComponentRpcService.cpp
    lib /NOLOGO  /OUT:debug\ScoeComponent.lib @C:\Users\Luca\AppData\Local\Temp\ScoeComponent.lib.3384.2171.jom
    cd ScoeComponentLog\ && ( if not exist Makefile C:\Qt\Qt5.4.0\5.4\msvc2013_64\bin\qmake.exe C:\Users\Luca\Documents\QtProjects\WinSample\WINSAMPLE\ScoeComponentLog\ScoeComponentLog.pro -spec win32-msvc2013 CONFIG+=debug -o Makefile ) && C:\Qt\Qt5.4.0\Tools\QtCreator\bin\jom.exe -f Makefile
    C:\Qt\Qt5.4.0\Tools\QtCreator\bin\jom.exe -f Makefile.Debug
    cl -c -nologo -Zm200 -Zc:wchar_t -FS -Zi -MDd -GR -W3 -w34100 -w34189 -EHsc /Fddebug\ScoeComponentLog.pdb -DUNICODE -DWIN32 -DWIN64 -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I"..\..\..\LIBS\qjsonrpc\include" -I"..\..\..\WINSAMPLE\ScoeComponent" -I"C:\Qt\Qt5.4.0\5.4\msvc2013_64\include" -I"C:\Qt\Qt5.4.0\5.4\msvc2013_64\include\QtGui" -I"C:\Qt\Qt5.4.0\5.4\msvc2013_64\include\QtANGLE" -I"C:\Qt\Qt5.4.0\5.4\msvc2013_64\include\QtNetwork" -I"C:\Qt\Qt5.4.0\5.4\msvc2013_64\include\QtCore" -I"debug" -I"." -I"C:\Qt\Qt5.4.0\5.4\msvc2013_64\mkspecs\win32-msvc2013" -Fodebug\ @C:\Users\Luca\AppData\Local\Temp\ScoeComponentLogRpcService.obj.2568.16.jom
ScoeComponentLogRpcService.cpp
ScoeComponentLogEngine.cpp
    cl -c -nologo -Zm200 -Zc:wchar_t -FS -Zi -MDd -GR -W3 -w34100 -w34189 -EHsc /Fddebug\ScoeComponentLog.pdb -DUNICODE -DWIN32 -DWIN64 -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I"..\..\..\LIBS\qjsonrpc\include" -I"..\..\..\WINSAMPLE\ScoeComponent" -I"C:\Qt\Qt5.4.0\5.4\msvc2013_64\include" -I"C:\Qt\Qt5.4.0\5.4\msvc2013_64\include\QtGui" -I"C:\Qt\Qt5.4.0\5.4\msvc2013_64\include\QtANGLE" -I"C:\Qt\Qt5.4.0\5.4\msvc2013_64\include\QtNetwork" -I"C:\Qt\Qt5.4.0\5.4\msvc2013_64\include\QtCore" -I"debug" -I"." -I"C:\Qt\Qt5.4.0\5.4\msvc2013_64\mkspecs\win32-msvc2013" -Fodebug\ @C:\Users\Luca\AppData\Local\Temp\ScoeComponentLog.obj.2568.16.jom
ScoeComponentLog.cpp
    C:\Qt\Qt5.4.0\5.4\msvc2013_64\bin\moc.exe -DUNICODE -DWIN32 -DWIN64 -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -D_MSC_VER=1800 -D_WIN32 -D_WIN64 -IC:/Qt/Qt5.4.0/5.4/msvc2013_64/mkspecs/win32-msvc2013 -IC:/Users/Luca/Documents/QtProjects/WinSample/WINSAMPLE/ScoeComponentLog -IC:/Users/Luca/Documents/QtProjects/WinSample/LIBS/qjsonrpc/include -IC:/Users/Luca/Documents/QtProjects/WinSample/WINSAMPLE/ScoeComponent -IC:/Qt/Qt5.4.0/5.4/msvc2013_64/include -IC:/Qt/Qt5.4.0/5.4/msvc2013_64/include/QtGui -IC:/Qt/Qt5.4.0/5.4/msvc2013_64/include/QtANGLE -IC:/Qt/Qt5.4.0/5.4/msvc2013_64/include/QtNetwork -IC:/Qt/Qt5.4.0/5.4/msvc2013_64/include/QtCore -I. ..\..\..\WINSAMPLE\ScoeComponentLog\ScoeComponentLogRpcService.h -o debug\moc_ScoeComponentLogRpcService.cpp
    C:\Qt\Qt5.4.0\5.4\msvc2013_64\bin\moc.exe -DUNICODE -DWIN32 -DWIN64 -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -D_MSC_VER=1800 -D_WIN32 -D_WIN64 -IC:/Qt/Qt5.4.0/5.4/msvc2013_64/mkspecs/win32-msvc2013 -IC:/Users/Luca/Documents/QtProjects/WinSample/WINSAMPLE/ScoeComponentLog -IC:/Users/Luca/Documents/QtProjects/WinSample/LIBS/qjsonrpc/include -IC:/Users/Luca/Documents/QtProjects/WinSample/WINSAMPLE/ScoeComponent -IC:/Qt/Qt5.4.0/5.4/msvc2013_64/include -IC:/Qt/Qt5.4.0/5.4/msvc2013_64/include/QtGui -IC:/Qt/Qt5.4.0/5.4/msvc2013_64/include/QtANGLE -IC:/Qt/Qt5.4.0/5.4/msvc2013_64/include/QtNetwork -IC:/Qt/Qt5.4.0/5.4/msvc2013_64/include/QtCore -I. ..\..\..\WINSAMPLE\ScoeComponentLog\ScoeComponentLogEngine.h -o debug\moc_ScoeComponentLogEngine.cpp
Generating Code...
    cl -c -nologo -Zm200 -Zc:wchar_t -FS -Zi -MDd -GR -W3 -w34100 -w34189 -EHsc /Fddebug\ScoeComponentLog.pdb -DUNICODE -DWIN32 -DWIN64 -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I"..\..\..\LIBS\qjsonrpc\include" -I"..\..\..\WINSAMPLE\ScoeComponent" -I"C:\Qt\Qt5.4.0\5.4\msvc2013_64\include" -I"C:\Qt\Qt5.4.0\5.4\msvc2013_64\include\QtGui" -I"C:\Qt\Qt5.4.0\5.4\msvc2013_64\include\QtANGLE" -I"C:\Qt\Qt5.4.0\5.4\msvc2013_64\include\QtNetwork" -I"C:\Qt\Qt5.4.0\5.4\msvc2013_64\include\QtCore" -I"debug" -I"." -I"C:\Qt\Qt5.4.0\5.4\msvc2013_64\mkspecs\win32-msvc2013" -Fodebug\ @C:\Users\Luca\AppData\Local\Temp\moc_ScoeComponentLogRpcService.obj.2568.2516.jom
moc_ScoeComponentLogRpcService.cpp
    cl -c -nologo -Zm200 -Zc:wchar_t -FS -Zi -MDd -GR -W3 -w34100 -w34189 -EHsc /Fddebug\ScoeComponentLog.pdb -DUNICODE -DWIN32 -DWIN64 -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I"..\..\..\LIBS\qjsonrpc\include" -I"..\..\..\WINSAMPLE\ScoeComponent" -I"C:\Qt\Qt5.4.0\5.4\msvc2013_64\include" -I"C:\Qt\Qt5.4.0\5.4\msvc2013_64\include\QtGui" -I"C:\Qt\Qt5.4.0\5.4\msvc2013_64\include\QtANGLE" -I"C:\Qt\Qt5.4.0\5.4\msvc2013_64\include\QtNetwork" -I"C:\Qt\Qt5.4.0\5.4\msvc2013_64\include\QtCore" -I"debug" -I"." -I"C:\Qt\Qt5.4.0\5.4\msvc2013_64\mkspecs\win32-msvc2013" -Fodebug\ @C:\Users\Luca\AppData\Local\Temp\moc_ScoeComponentLogEngine.obj.2568.3094.jom
moc_ScoeComponentLogEngine.cpp
    link /NOLOGO /DYNAMICBASE /NXCOMPAT /DEBUG /SUBSYSTEM:CONSOLE "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /MANIFEST:embed /OUT:debug\ScoeComponentLog.exe @C:\Users\Luca\AppData\Local\Temp\ScoeComponentLog.exe.2568.4859.jom
ScoeComponent.lib(moc_ScoeComponentRpcService.obj) : error LNK2001: unresolved external symbol "public: static struct QMetaObject const QJsonRpcService::staticMetaObject" (?staticMetaObject@QJsonRpcService@@2UQMetaObject@@B)
debug\ScoeComponentLog.exe : fatal error LNK1120: 1 unresolved externals
jom: C:\Users\Luca\Documents\QtProjects\WinSample\BUILD\Debug\ScoeComponentLog\Makefile.Debug [debug\ScoeComponentLog.exe] Error 1120
jom: C:\Users\Luca\Documents\QtProjects\WinSample\BUILD\Debug\ScoeComponentLog\Makefile [debug] Error 2
jom: C:\Users\Luca\Documents\QtProjects\WinSample\BUILD\Debug\Makefile [sub-ScoeComponentLog-make_first-ordered] Error 2
15:37:19: The process "C:\Qt\Qt5.4.0\Tools\QtCreator\bin\jom.exe" exited with code 2.
Error while building/deploying project WINSAMPLE (kit: Desktop Qt 5.4.0 MSVC2013 64bit)
When executing step "Make"
15:37:19: Elapsed time: 00:08.

WinSample.zip

Luca Cavalli

unread,
Dec 18, 2014, 6:28:36 AM12/18/14
to qjsonrpc-d...@googlegroups.com
Dear all,

after a quick mail exchange with Matt, he found the solution.
Adding DEFINES += QJSONRPC_SHARED to my .pro file fixed the issue.

Thanks,

Luca
Reply all
Reply to author
Forward
0 new messages