我的程序在启动时依赖于几个DLL,包括来自QT本身的QtCore4.dll和QtGui4.dll以及来自National Instruments的ni488.dll。当我尝试使用cbw32.dll中的任何一个函数(在http://www.mccdaq.com/software.aspx的UniversalLibrary中找到一个5 MB的文件)时,我的程序突然需要5秒多的时间才能启动,而之前它已经瞬间启动了。有什么办法可以减少启动时间吗?就此而言,在那段时间发生的事情是OS是否主动链接这些功能,或者只是试图找到DLL?有没有办法减少DLL的大小,以便只包含与我的项目相关的东西?或者在可执行文件中包含该信息(换句话说,静态链接)?
编辑:并行加载DLL确实是一个很好的建议(以及我将继续使用的技术),但是没有达到我认为的核心问题。有一个5 MB的DLL需要5秒钟加载似乎过多,对我来说,这是一个更深层次的问题。我的期望是否在这里,这些加载时间是否正常?或者是否存在错误(如果是,我应该注意什么)?答案 0 :(得分:3)
答案 1 :(得分:1)
我自己遇到了这个问题。我已经在这5秒多的启动延迟中生活了很长一段时间,但根据某人的建议,在暂停期间闯入调试器。似乎cbw32
正在进行一些冗长的初始化,可能在DllMain
中。我想有些硬件轮询/重置/在那段时间内正在进行的任何事情。
有人建议将/DELAYLOAD
用于cbw32.dll
,这可以消除延迟,但我还没有在具有适用主板的系统上测试功能......