各位大虾,
我写了个Unicode MFC DLL,用LoadLibrary加载很慢。怎么解决这个问题?
试试看静态加载dll能否快一些。另外是不是和特定的函数有关。
有测试过加载时长吗?
LoadLibrary大致过程
1、系统读取DLL文件
2、将其映射到你的进程空间
3、调用DLL导出函数DllMain
前两步应该不会那么慢,猜想可能你的DLL的DllMain函数耗费时间。
DllMain函数一般在DLL_PROCESS_ATTACH处理中,对内部的数据进行初始化或者一些其他准备工作。
你的DLL是否有源码,你可以检查看看DllMain。
你的DLL还使用了其它DLL?
可能和你使用DllImport的方式有关,如果你没有指定Charset,你可以明确的使用LoadLibraryW函数。还有如果有可能,尽量使用LoadLibraryEx函数,这样你可以指定你的dll load成数据文件。
DllImport("kernel32.dll", CharSet=CharSet.Unicode, SetLastError=true)