+ -
当前位置:首页 → 问答吧 → 关于使用_bstr_t调用dll释放缓慢的问题

关于使用_bstr_t调用dll释放缓慢的问题

时间:2011-12-15

来源:互联网

C/C++ code
#include <iostream>
#include <string>
using namespace std;
using namespace Dm;
void main()
{
    CoInitialize(NULL);
    CLSID clsid;
    HRESULT hr=CLSIDFromProgID(OLESTR("dm.dmsoft"),&clsid);//这里的"dm.dmsoft"是dll在注册表里的键值。
    Idmsoft* dme;                              //Idmsoft是dm.dll的接口方法,dme这个对象名随便换。
    hr=CoCreateInstance(clsid,NULL,CLSCTX_INPROC_SERVER,__uuidof(Idmsoft),(LPVOID*)&dme);
    _bstr_t dvr0=dme->SetDict(0,"error.txt"); 

    dme->Release();      //为什么这里释放十分缓慢??????????
                                          
}





该代码我加了dme->Release(); 这个释放命令,运行起来不会出错,但是释放十分缓慢,我测试了下加了释放命令,竟然比以前运行慢10倍以上。。。。这是什么原因呢?

求高手修改或指点!

作者: guoyingfeng1   发布时间: 2011-12-15

那dme->Release();里面都做了什么了? 

而且看起来你的COM组件是处理文件的,也许释放的时候要做很多IO呢?
问题不在于Release本身吧?

作者: healer_kx   发布时间: 2011-12-15

同意楼上的,debug into final release

作者: gw_net   发布时间: 2011-12-15

同意楼上的,debug into final release ++


顶一个,然后接分

作者: wallwind   发布时间: 2011-12-15

引用 1 楼 healer_kx 的回复:
那dme->Release();里面都做了什么了?

而且看起来你的COM组件是处理文件的,也许释放的时候要做很多IO呢?
问题不在于Release本身吧?


com组件是处理字库的,但是就算我不加载字库不进行操作,释放仍然很慢,比如下面这样,不操作,直接释放仍然不行。

CoInitialize(NULL);
CLSID clsid;
HRESULT hr=CLSIDFromProgID(OLESTR("dm.dmsoft"),&clsid);
Idmsoft* dme;  
hr=CoCreateInstance(clsid,NULL,CLSCTX_INPROC_SERVER,__uuidof(Idmsoft),(LPVOID*)&dme);

dme->Release();

作者: guoyingfeng1   发布时间: 2011-12-15