想使用mfc做个数据库管理软件,在插入ATL模板类之后编译完,就产生了以下错误:
c:\program files\microsoft visual studio\vc98\atl\include\atldbcli.h(76) : error C2065: 'DBFILETIME' : undeclared identifier
c:\program files\microsoft visual studio\vc98\atl\include\atldbcli.h(76) : error C2059: syntax error : ')'
c:\program files\microsoft visual studio\vc98\atl\include\atldbcli.h(76) : error C2143: syntax error : missing ';' before '{'
c:\program files\microsoft visual studio\vc98\atl\include\atldbcli.h(76) : error C2447: missing function header (old-style formal list?)
Error executing cl.exe.
上网搜了一下,都不能解决,望高手不吝赐教。

解决方案 »

  1.   

    这个是ATL的版本问题造成的,ATL是有版本的,你使用的是早期VC6的ATL版本,
    而ole db代码(你说的模板类)是装了VC6 sp以后的代码。解决方法: 安装vc6 sp6 即可。
      

  2.   

    肯定是版本的问题,因为这个问题我以前也遇到过,DBFILETIME是
    老版本的OLE DB中定义的,在新版本中已经改为FILETIME。可能你装的不是真正的sp6,而是假的版本吧。我的机器上是VC6SP6 c:\program files\microsoft visual studio\vc98\atl\include\atldbcli.h
    中第74-76行的内容如下:74 DEFINE_OLEDB_TYPE_FUNCTION(DBTIMESTAMP      ,DBTYPE_DBTIMESTAMP)
    75  DEFINE_OLEDB_TYPE_FUNCTION(FILETIME     ,DBTYPE_FILETIME)
    76 DEFINE_OLEDB_TYPE_FUNCTION(PROPVARIANT     ,DBTYPE_PROPVARIANT)如果你跟这个不一样,就说明不是真的sp6。
      

  3.   

    http://support.microsoft.com/kb/217218/zh-cn上面是微软的说法。
      

  4.   

    76 DEFINE_OLEDB_TYPE_FUNCTION(PROPVARIANT ,DBTYPE_PROPVARIANT),我的在77行。