引用:
|
作者: famel 从你的代码来看你的DLL使用了MFC,如果这个DLL是MFC扩展DLL的话它只能动态链接MFC71.DLL,也就意味着你的程序也必须使用MFC71.DLL。MFC扩展DLL在DllMain里有代码将其注册到MFC资源链里,并且你要在该DLL的每一个输出函数的最前面使用AFX_MANAGE_STATE宏来切换当前资源句柄。如果EXE和DLL使用不同的BUILD,那么意味着同一个进程里存在MFC71.DLL和MFC71D.DLL,实在是难以预料会发生什么事情。 |
应该是这样了。
不过扩展DLL好象不用AFX_MANAGE_STATE切换资源句柄吧?可能就是因为MFC71.DLL和MFC71D.DLL对同一个资源句柄操作产生的问题。如使用常规DLL即使有两套MFCXX.dll,也不会有问题,因为EXE与DLL的资源是分开的,调用DLL的导出函数时只要用AFX_MANAGE_STATE切换资源句柄就可以了。