我在研究三维鼠标的sdk,它的demo程序能够调通,不需要安装microsoft   SDK,而我的程序,在View类窗口中添加了#include   "si.h "   之后编译就报错 
出现如下信息: 
ERROR:   an   OS   type   must   be   defined   --   e.g.   OS_WIN32 
c:\program   files\3dconnexion\3dxware   sdk\inc\si.h(41)   :   error   C2143:   syntax   error   :   missing   '; '   before   'constant ' 
…… 
请教高手,该如何解决? si.h文件部分内容如下: 
#ifndef   _SI_H_ 
#define   _SI_H_ static   char   incFileNameCvsId[]= "(C)   1996   Spacetec   IMC   Corporation:   $Id:   si.h,v   1.22   1998/03/12   11:07:03   mfarr   Exp   $ "; #include   "spwmacro.h " 
#include   "spwdata.h " #ifdef   OS_DEFINED 
#undef   OS_DEFINED 
#endif #ifdef   OS_WIN32 
#define   OS_DEFINED 
#include   <windows.h> 
#endif #ifndef   OS_DEFINED 
#ifdef   WIN32 
#pragma   message   ( "ERROR:   an   OS   type   must   be   defined   --   e.g.   OS_WIN32 ") 
#endif 
ERROR:   an   OS   type   must   be   defined   --   e.g.   OS_WIN32 
#endif #include   <stdio.h> 
#include   "spwerror.h " /* 
  *   UI   modes   
  */ 
#define   SI_UI_ALL_CONTROLS         0xffffffffL 
#define   SI_UI_NO_CONTROLS           0x00000000L 

解决方案 »

  1.   

    #ifndef OS_DEFINED 
    #ifdef WIN32 
    #pragma message ( "ERROR: an OS type must be defined -- e.g. OS_WIN32 ") 
    #endif 
    ERROR: an OS type must be defined -- e.g. OS_WIN32 
    #endif  
      

  2.   

    错误提示已经告诉你了你要定义一个变量
    #ifndef OS_DEFINED  如果没有定义OS_DEFINED
    #ifdef WIN32   如果定义了WIN32#pragma message ( "ERROR: an OS type must be defined -- e.g. OS_WIN32 ")  
    #endif  在项目里 
    #defined OS_WIN32
      

  3.   

    你不能再任意一个地方定义了,就认为好了,必须在这个判断前定义,你需要在工程设置/C++设置里的Preprocessor处定义这个宏
      

  4.   

    定义宏时是在那个框中写OS_WIN32  还是_OS_WIN32
      

  5.   


    我定义了后开始出现这种错误
    3DMouse.obj : error LNK2001: unresolved external symbol _SiTerminate一共13个错误跟32个警告