RunTimeDepot.cpp 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. // RunTimeDepot.cpp : 定义 DLL 的初始化例程。
  2. //
  3. #include "stdafx.h"
  4. #include <afxdllx.h>
  5. #include <cmath>
  6. #include "RunTimeDepot.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #endif
  10. static AFX_EXTENSION_MODULE RunTimeDepotDLL = { NULL, NULL };
  11. extern "C" int APIENTRY
  12. DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
  13. {
  14. // 如果使用 lpReserved,请将此移除
  15. UNREFERENCED_PARAMETER(lpReserved);
  16. if (dwReason == DLL_PROCESS_ATTACH)
  17. {
  18. TRACE0("RunTimeDepot.DLL 正在初始化!\n");
  19. // 扩展 DLL 一次性初始化
  20. if (!AfxInitExtensionModule(RunTimeDepotDLL, hInstance))
  21. return 0;
  22. // 将此 DLL 插入到资源链中
  23. // 注意: 如果此扩展 DLL 由
  24. // MFC 规则 DLL(如 ActiveX 控件)隐式链接到
  25. // 而不是由 MFC 应用程序链接到,则需要
  26. // 将此行从 DllMain 中移除并将其放置在一个
  27. // 从此扩展 DLL 导出的单独的函数中。使用此扩展 DLL 的
  28. // 规则 DLL 然后应显式
  29. // 调用该函数以初始化此扩展 DLL。否则,
  30. // CDynLinkLibrary 对象不会附加到
  31. // 规则 DLL 的资源链,并将导致严重的
  32. // 问题。
  33. new CDynLinkLibrary(RunTimeDepotDLL);
  34. }
  35. else if (dwReason == DLL_PROCESS_DETACH)
  36. {
  37. TRACE0("RunTimeDepot.DLL 正在终止!\n");
  38. // 在调用析构函数之前终止该库
  39. AfxTermExtensionModule(RunTimeDepotDLL);
  40. }
  41. return 1; // 确定
  42. }