#include <objbase.h>
#include <comdef.h>

BOOL CWatchApp::InitInstance()
{
AfxEnableControlContainer();
//初始化COM
HRESULT hres;
hres = CoInitializeEx(0, COINIT_MULTITHREADED); 
if (FAILED(hres))
{
                  // Program has failed.
CString csErr;
csErr.Format("Failed to initialize COM library. Error code = %d",hres);
AfxMessageBox(csErr);
return FALSE;
}
hres = CoInitializeSecurity(NULL, -1, NULL, NULL,  RPC_C_AUTHN_LEVEL_CONNECT, RPC_C_IMP_LEVEL_IDENTIFY,  NULL,  EOAC_NONE,  NULL);
if (FAILED(hres))
{
CString csErr;
csErr.Format("Failed to initialize COM Security library. Error code = %d",hres);
AfxMessageBox(csErr);
return FALSE;
}
。。
     return TRUE; 
}编译时却告诉我说CoInitializeEx()和CoInitializeSecurity()未定义,请高手告诉我,这是为什么?到底有什么地方没做到?

解决方案 »

  1.   

    太奇怪了,Rebuild all试试。
      

  2.   

    使用CoInitializeEx()时,需要在工程设置中预处理定义处添加_WIN32_DCOM
    即:
    Project->Setting->C/C++->Preprocessor Define
    这样在编译时就可获得::CoInitializeEx()的原型定义.
      

  3.   

    在stdafx.h文件中加入该语句#define _WIN32_WINNT 0x0410
      

  4.   

    #if (_WIN32_WINNT >= 0x0400 ) || defined(_WIN32_DCOM) // DCOM
    WINOLEAPI  CoInitializeEx(LPVOID pvReserved, DWORD dwCoInit);
    #endif // DCOM你自己在头文件中加上
    #define _WIN32_DCOM

    #define _WIN32_WINNT 0x0400
      

  5.   

    没什么大问题,你检查一下编译器的LINK选项,看ole32.lib是否在链接模块列表中!