Qt 如何预加载Dll?
现在做wince平台的程序开发 用的Qt,界面刷新的时候感觉很慢,但是Vc调试的时候速度很快,
VC调试的时候信息有:
加载模块: ws2.dll
加载模块: winsock.dll
加载模块: lpcrt.dll
加载模块: rpcrt4.dll
加载模块: commctrl.dll
加载模块: shcore.dll
加载模块: ceshell.dll
加载模块: ole32.dll
加载模块: QtCore4.dll
加载模块: QtGui4.dll
加载模块: QtXml4.dll
加载模块: SerializeBasic.dll
加载模块: fpcrt.dll
加载模块: coredll.dll
加载模块: mmtimer.dll
加载模块: aygshell.dll
因此怀疑调试的时候,是预先将qt的各个dll加载到内存里了,但是我现在在main函数里这样写:
QApplication a(argc, argv);
QLibrary libCore("QtCore4.dll");
bool lib = libCore.load();
QLibrary libGui("QtGui4.dll");
lib = libGui.load();
QLibrary libXml("QtXml4.dll");
lib = libXml.load();
QLibrary libSerializeBasic("SerializeBasic.dll");
lib = libSerializeBasic.load();
QMainWdgt w;
w.show();
这样子好像程序还是很快,这样位置有问题?Qt是怎么调用各个dll的呢 QtCore4.dll等等
[解决办法]
这个不是Qt怎么装载dll库, 这个是os loader程序,在你启动qt应用程序的时候,装载的。
[解决办法]
装载器pe文件的输入表来装载对应的dll
[解决办法]
编译期链接的库无需在代码里加载。如果你的应用支持插件DLL,可以用QLibrary来动态加载。