用 VS2008 sp1 编译出 QT 4.5.1 的程序,发现无法载入plugin。
曾经QT 4.4.1是可以的。
解决方法如下:
1.sp1 运行时库,缺省还是 Microsoft.VC90.CRT 21022.8。
修改 $(QtDir)$\mkspecs\win32-msvc2008\qmake.conf,使其用Microsoft.VC90.CRT 30729.1版。
DEFINES += UNICODE WIN32 QT_LARGEFILE_SUPPORT _BIND_TO_CURRENT_VCLIBS_VERSION=1 _BIND_TO_CURRENT_CRT_VERSION=1
(红色是添加部分)
然后 >> nmake。
2.重新编译plugin,
修改 $(QtDir)$\src\plugins\qpluginbase.pri,
在
CONFIG += qt plugin
CONFIG-=embed_manifest_dll
(红色是添加部分)
然后 >> qmake >> namke 。
上述为备忘。
如果想用Microsoft.VC90.CRT 30729.1版,自选需要下面预定义:
#define _BIND_TO_CURRENT_CRT_VERSION 1 #define _BIND_TO_CURRENT_ATL_VERSION 1 #define _BIND_TO_CURRENT_MFC_VERSION 1 #define _BIND_TO_CURRENT_OPENMP_VERSION 1 #define _BIND_TO_CURRENT_VCLIBS_VERSION 1 详细参考: