现在我在动态库中使用了
gDllCfgDoc := CreateOleObject('Microsoft.XMLDOM') as IXMLDomDocument;
gDllCfgDoc是一个动态库里的全局变量
这个动态库被释放的时候就会报 too many consecutive  exceptuons:'access violation at 0x2786302:read of address 0x15ca5f8'
然后,我在动态库释放中加了
    gDllCfgDoc._Release;
    gDllCfgDoc := nil;
开始是在DLL_Process_Detach时加的,
在gDllCfgDoc := nil;时就会报同样的错。然后又写了个释放的方法,让主程序在关闭的时候调用,结果一样。
请问应该如何解决?

解决方案 »

  1.   

    如果真的不知哪里有问题,那么试试 使用 try except end 忽略。
      
      

  2.   

    的确,在DLL使用XML很有问题,我也有这问题
    我是用TXMLDocument的,到了Active:=True就有死住在那了
    有没有CoInitialize了
      

  3.   

    不需要用CoInitialize吧,现在在里面操作读写都可以,如果需要CoInitialize的话这些操作都会不行
      

  4.   

    用try except end ?把问题忽略,我担心只是暂时隐藏了,这样用在程序中会很不安全
      

  5.   

    另外,我现在改成用CoDOMDocument.Create去建立,情况一样。
      

  6.   

    在DELPHI中使用COM,绝不要手动去调用_Release
    只需要设为nil,编译器在编译的时候,会为您转换成_Release调用的.为什么不随创随用呢? 这样的东西,放在全局变量里面,你需要考虑处理的细节非常多的.
      

  7.   

    因为后来干脆改成使用Activex控件了,在控件中没有问题,所以后来就没有再来关注了。
    我原来只是设为nil的,实在不行才是加了_realease的方法。
    随创随用?每次都要去load,很不爽吧。
    另外用active控件怎么可以呢,他们的 载体都是dll啊,肯定是有个环节的,各位是否研究一把。
      

  8.   

    为什么不用XMLDocument控件呢?都封装好了。放到一个DataModule中。
      

  9.   

    XMLDocument??都说了用在动态库里有问题。
    后来我还是改成用ActiveX不用动态库了
      

  10.   

    XMLDocument 动态创建要加入一个 object. create(object)可以改用NativeXml 处理。