在我的一DLL中调用CreateEvent失败,错误代码120
经查意义为"此功能仅在 Win32 模式下有效。 "
该如何解决?急!
我的其他动态库调用CreateEvent可以成功
我查工程设置,也没看出区别
.

解决方案 »

  1.   

    g_hEvent = ::CreateEvent(NULL,TRUE,FALSE,_T("MyEventName"));
    if(g_hEvent==NULL)//Error=0
    {
    Error=GetLastError();//Error=120
    }
    我其他工程是
    g_hEvent = ::CreateEvent(NULL,TRUE,FALSE,"MyEventName");
    但在本工程必须用_T()
      

  2.   

    我没记错的话,使用_T()会使ASCII字符串变为UNICODE字符串,而CreateEvent不接受转换后的参数。为什么一定要加_T(),讲一下原因好吗?
      

  3.   

    因为本工程其他地方需要Unicode支持
    编译设置:
    /nologo /MT /W3 /GX /ZI /Od /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D MYMODULE_EXPORTS" 
    工程连接设置为:
    kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:no /pdb:"MyModule.pdb" /debug /machine:I386 /def:".\MyMonitor.def" /out:"C:\Program Files\MyApp\MyModule.dll" /implib:"MyModule.lib"