在使用DLL之前,在MFC应用程序中调用AfxOleTerm

时间:2015-07-30 10:26:23

标签: c++ dll mfc ole

在MFC应用程序中,在应用程序AfxOleInit()方法中调用InitInstance()方法。 我需要调用此方法,因为我在应用程序中使用OLE对象。

如果调用了AfxOleInit(),我也在使用一个效果不佳的DLL。

我在考虑:

  • 在加载DLL之前调用 AfxOleTerm()
  • 做我对DLL的处理,
  • 之后调用AfxOleInit()(在主程序中,而不是在DLL中)。

这是一个可以接受的解决方案吗?

请注意,在实践中,如果我这样做,DLL实际上表现正常。

1 个答案:

答案 0 :(得分:0)

调用AfxOleTerm在DLL调用之前不是一个好主意。原因很简单:这样做可能会导致此线程的所有当前创建的COM对象被销毁,或者它们不再可以访问。

无论如何在DLL中调用AfxOleInit并不是一个好主意。问题是,这个调用总是特定于一个线程。

只有应用程序应该在其线程中调用AfxOleInit,而不应该执行任何进一步的操作。

为了使它更复杂,它还取决于您使用的MFC型号。在DLL中共享MFC会导致AfxOleInit与使用静态链接的DLL不同。