在MFC应用程序中,在应用程序AfxOleInit()
方法中调用InitInstance()
方法。
我需要调用此方法,因为我在应用程序中使用OLE对象。
如果调用了AfxOleInit()
,我也在使用一个效果不佳的DLL。
我在考虑:
AfxOleInit()
(在主程序中,而不是在DLL中)。这是一个可以接受的解决方案吗?
请注意,在实践中,如果我这样做,DLL实际上表现正常。
答案 0 :(得分:0)
调用AfxOleTerm在DLL调用之前不是一个好主意。原因很简单:这样做可能会导致此线程的所有当前创建的COM对象被销毁,或者它们不再可以访问。
无论如何在DLL中调用AfxOleInit并不是一个好主意。问题是,这个调用总是特定于一个线程。
只有应用程序应该在其线程中调用AfxOleInit,而不应该执行任何进一步的操作。
为了使它更复杂,它还取决于您使用的MFC型号。在DLL中共享MFC会导致AfxOleInit与使用静态链接的DLL不同。