I think I have successfully made a dynamic build of QxOrm 1.2.5 (and 1.2.5_BETA_04) using VC2010, Boost 1.50, and the VC2010 build of Qt 4.8.4 on Windows 7, after configuring Qt 4.8.4 and modifying the boost paths in QxOrm.pri. When I tried to use this QxOrm VC2010 build to build a couple of my applications which have been built and worked fine on Linux (RHEL6) with QxOrm since 1.2.4, I got the following linker errors (linker command included):
"/cygdrive/c/Program Files (x86)/Microsoft Visual Studio 10.0/VC/bin"/link.exe /incremental:no /machine:X86 /nologo /debug /FIXED:NO /nodefaultlib:LIBCMT.lib /subsystem:console /OUT:F:/afung/dev/qfr/trunk/builds/dal/unittest/win32_vc100_debug/driver.t.exe F:/afung/dev/qfr/trunk/builds/dal/unittest/objs_win32_vc100_debug/driver.t.obj \
/LIBPATH:F:/afung/dev/qfr/trunk/builds/dal/win32_vc100_debug/ dal.lib \
/LIBPATH:F:/afung/dev/qfr/trunk/builds/dbc/win32_vc100_debug/ dbc.lib \
/LIBPATH:F:/afung/dev/qfr/trunk/builds/core/win32_vc100_debug/ core.lib \
/LIBPATH:F:/afung/dev/qfr/trunk/3rdParty/win32/boost/1.50/libs/ libboost_filesystem-vc100-mt-s-1_50.lib libboost_system-vc100-mt-s-1_50.lib libboost_thread-vc100-mt-s-1_50.lib libboost_serialization-vc100-mt-s-1_50.lib libboost_date_time-vc100-mt-s-1_50.lib libboost_chrono-vc100-mt-s-1_50.lib \
/LIBPATH:F:/afung/dev/qfr/trunk/3rdParty/win32/qpid/0.18/libs/ qpidclient.lib qpidcommon.lib qpidtypes.lib qpidmessaging.lib \
/LIBPATH:F:/afung/dev/qfr/trunk/3rdParty/win32/qxorm/1.2.5/libs/ QxOrm.lib \
/LIBPATH:C:/Qt/4.8.4/lib/ QtGui4.lib QtNetwork4.lib QtSql4.lib QtXml4.lib QtCore4.lib \
kernel32.lib wsock32.lib netapi32.lib advapi32.lib oldnames.lib comdlg32.lib comctl32.lib user32.lib
driver.t.obj : error LNK2001: unresolved external symbol "public: static struct QMetaObject const qx::dao::detail::QxDaoAsyncRunner::staticMetaObject" (?staticMetaObject@QxDaoAsyncRunner@detail@dao@qx@@2UQMetaObject@@B)
dal.lib(DBFactory.obj) : error LNK2001: unresolved external symbol "public: static struct QMetaObject const qx::dao::detail::QxDaoAsyncRunner::staticMetaObject" (?staticMetaObject@QxDaoAsyncRunner@detail@dao@qx@@2UQMetaObject@@B)
driver.t.obj : error LNK2001: unresolved external symbol "public: static struct QMetaObject const qx::QxDaoAsync::staticMetaObject" (?staticMetaObject@QxDaoAsync@qx@@2UQMetaObject@@B)
dal.lib(DBFactory.obj) : error LNK2001: unresolved external symbol "public: static struct QMetaObject const qx::QxDaoAsync::staticMetaObject" (?staticMetaObject@QxDaoAsync@qx@@2UQMetaObject@@B)
driver.t.obj : error LNK2001: unresolved external symbol "public: static struct QMetaObject const qx::service::QxThread::staticMetaObject" (?staticMetaObject@QxThread@service@qx@@2UQMetaObject@@B)
dal.lib(DBFactory.obj) : error LNK2001: unresolved external symbol "public: static struct QMetaObject const qx::service::QxThread::staticMetaObject" (?staticMetaObject@QxThread@service@qx@@2UQMetaObject@@B)
driver.t.obj : error LNK2001: unresolved external symbol "public: static struct QMetaObject const qx::service::QxThreadPool::staticMetaObject" (?staticMetaObject@QxThreadPool@service@qx@@2UQMetaObject@@B)
dal.lib(DBFactory.obj) : error LNK2001: unresolved external symbol "public: static struct QMetaObject const qx::service::QxThreadPool::staticMetaObject" (?staticMetaObject@QxThreadPool@service@qx@@2UQMetaObject@@B)
driver.t.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: class qx::QxDataMemberX<class JpmCds> * __thiscall qx::QxClass<class JpmCds>::dataMemberX(void)const " (__imp_?dataMemberX@?$QxClass@VJpmCds@@@qx@@QBEPAV?$QxDataMemberX@VJpmCds@@@2@XZ) referenced in function "public: virtual void __thiscall qx::QxSqlQueryBuilder<class boost::shared_ptr<class JpmCds> >::init(void)" (?init@?$QxSqlQueryBuilder@V?$shared_ptr@VJpmCds@@@boost@@@qx@@UAEXXZ)
driver.t.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: static class qx::QxClass<class JpmCds> * __cdecl qx::QxSingleton<class qx::QxClass<class JpmCds> >::getSingleton(void)" (__imp_?getSingleton@?$QxSingleton@V?$QxClass@VJpmCds@@@qx@@@qx@@SAPAV?$QxClass@VJpmCds@@@2@XZ) referenced in function "public: virtual void __thiscall qx::QxSqlQueryBuilder<class boost::shared_ptr<class JpmCds> >::init(void)" (?init@?$QxSqlQueryBuilder@V?$shared_ptr@VJpmCds@@@boost@@@qx@@UAEXXZ)
driver.t.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: class qx::QxDataMemberX<class AirBb> * __thiscall qx::QxClass<class AirBb>::dataMemberX(void)const " (__imp_?dataMemberX@?$QxClass@VAirBb@@@qx@@QBEPAV?$QxDataMemberX@VAirBb@@@2@XZ) referenced in function "public: virtual void __thiscall qx::QxSqlQueryBuilder<class boost::shared_ptr<class AirBb> >::init(void)" (?init@?$QxSqlQueryBuilder@V?$shared_ptr@VAirBb@@@boost@@@qx@@UAEXXZ)
driver.t.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: static class qx::QxClass<class AirBb> * __cdecl qx::QxSingleton<class qx::QxClass<class AirBb> >::getSingleton(void)" (__imp_?getSingleton@?$QxSingleton@V?$QxClass@VAirBb@@@qx@@@qx@@SAPAV?$QxClass@VAirBb@@@2@XZ) referenced in function "public: virtual void __thiscall qx::QxSqlQueryBuilder<class boost::shared_ptr<class AirBb> >::init(void)" (?init@?$QxSqlQueryBuilder@V?$shared_ptr@VAirBb@@@boost@@@qx@@UAEXXZ)
F:/afung/dev/qfr/trunk/builds/dal/unittest/win32_vc100_debug/driver.t.exe : fatal error LNK1120: 8 unresolved externals
So, there are 2 categories of errors, the first group concerning the unresolved staticMetaObject methods, e.g., from QxDaoSync, QxThread, QxThreadPool, etc., and the second arising from the Qx-related template classes that my user code created. I may have some clue how to resolve the second class of errors (by omitting the __declspec(dllimport) prefix in the static build), but I don't know about the unresolved staticMetaObject symbols. Any clues to either problem are much appreciated. Thanks.