DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
// Remove this if you use lpReserved
UNREFERENCED_PARAMETER(lpReserved); if (dwReason == DLL_PROCESS_ATTACH)
{
TRACE0("OPCDLL.DLL Initializing!\n");

// Extension DLL one-time initialization
if (!AfxInitExtensionModule(OpcDllDLL, hInstance))
return 0; // Insert this DLL into the resource chain
// NOTE: If this Extension DLL is being implicitly linked to by
//  an MFC Regular DLL (such as an ActiveX Control)
//  instead of an MFC application, then you will want to
//  remove this line from DllMain and put it in a separate
//  function exported from this Extension DLL.  The Regular DLL
//  that uses this Extension DLL should then explicitly call that
//  function to initialize this Extension DLL.  Otherwise,
//  the CDynLinkLibrary object will not be attached to the
//  Regular DLL's resource chain, and serious problems will
//  result. new CDynLinkLibrary(OpcDllDLL);
}
else if (dwReason == DLL_PROCESS_DETACH)
{
TRACE0("OPCDLL.DLL Terminating!\n");
// Terminate the library before destructors are called
AfxTermExtensionModule(OpcDllDLL);
}
HRESULT hr = CoInitializeEx (NULL, COINIT_MULTITHREADED);  //写在这里吗?
return 1;   // ok
}那CoUninitialize ();写在那里那?
请说详细些好吗?