我的程序的一部分已经用DAO实现了,现在需要增加网络功能,要用多线程实现,可是DAO不支持多线程,我想在网络线程里面单独使用ADO,结果编译错误,出了一堆重复定义,我现在发现是和DAO的头文件冲突,请问有办法解决吗?

解决方案 »

  1.   

    回复人: commandconque(马江王) ( ) 信誉:107  2003-11-10 14:27:59  得分:40 
     
     
      
    我说说我的方法:
    1、首先在已有的ADO程序中的stdafx.h 文件中加入如下代码:
       #include <afxdao.h>
      #import "c:\Program Files\Common Files\System\ado\msado15.dll" rename_namespace("AdoNS")rename("EOF", "adoEOF")
    添加时应在所有的#include 之后,以确保ADO 的可用
      你在完成该步骤后可以试一试,DAO的功能是否可用,如果可用就说明成功了一半。
    2.这时你的ADO肯定是错误连篇的,你的ADO必须作如下的修改:
        你注意上述代码中的“AdoNS”,在所有的ADO的功能函数,功能变量前必须加入AdoNS::
     如果成功,它会自动弹出ADO的所有功能的列表
    比如原来是
       _RecordsetPtr  m_pRecordset;
      现在必须改成:
      AdoNS::_RecordsetPtr  m_pRecordset;
      “AdoNS”是你自己在stdafx.h定义的,可以胡乱写,但后面的代码必须以此为统一。
      又如自定义的函数
    Trans2Combox(CComboBox* CtrlBox,_RecordsetPtr Rec,CString field)
      必须改写为
    Trans2Combox(CComboBox* CtrlBox,AdoNS::__RecordsetPtr Rec,CString field)
    总之,要改写的地方较多,你遇到有问题的地方就改写试一试,看是否需要改写
    本人摸索了半年才得到的办法。
      供大家参考参考
      

  2.   

    可以如何实现在ADO下使用DAO:
    http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=183803