Com客户端每次测试COM组件时。COM组件工程就不能再编译

笑对人生 2009-07-15 03:32:18
我写了一个COM组件。写了一个客户端测试。但当我每测试一次的时候。我的COM组件工程就不能再编译了。


编译时会显示“gsoapCom 未能删除文件“f:\gsoapCom\Debug\gsoapCom.dll”。请确保该文件未被其他进程打开并且未被写保护。”

我知道这是 因为哪个地方在用这个 dll, 但我不知道哪里在用。没办法处理。

每测试一次都要注销一下系统 才能再测试。 麻烦 又 浪费时间。

谁有 解决办法 呢?
...全文
63 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
做鸡真好吃 2009-07-28
  • 打赏
  • 举报
回复
mark~
笑对人生 2009-07-24
  • 打赏
  • 举报
回复
yotta 2009-07-16
  • 打赏
  • 举报
回复
kill 进程 svchost.exe
nodiebirdcomeback 2009-07-16
  • 打赏
  • 举报
回复
组件的DLL没被释放
没被释放的DLL是不允许被删除的,
在释放组件后DLL没有被从内存中卸载
yyunffu 2009-07-16
  • 打赏
  • 举报
回复
在CoUninitialize(); 之前调用:spDisp.Release();注意,这里的访问方式是个点,非指针。
hfcarrey 2009-07-16
  • 打赏
  • 举报
回复
我也遇到这个问题
呵呵,遇到这个问题后,我就给前一个编译的dll改个名字,就好了
你也试试
枫桦沐阳 2009-07-16
  • 打赏
  • 举报
回复
加上之后,然后注销系统,重新登陆一下。

如果还有,那就晕了。
yyunffu 2009-07-16
  • 打赏
  • 举报
回复
你的调用里面是不是需要什么关闭操作?
笑对人生 2009-07-16
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 yyunffu 的回复:]
在CoUninitialize(); 之前调用:spDisp.Release();注意,这里的访问方式是个点,非指针。
[/Quote]

我加上了 :spDisp.Release();。 可是还是出现了上面的问题。
WaistCoatX 2009-07-15
  • 打赏
  • 举报
回复
用procexp查看下是那个进程使用了这个DLL。
gw_net 2009-07-15
  • 打赏
  • 举报
回复
肯定是某一个进程还在使用f:\gsoapCom\Debug\gsoapCom.dll
杀掉那个进程就可以了,
如果配了COM+,进程名字叫dllhost.exe
笑对人生 2009-07-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ynb119 的回复:]
addref release没控制好吧?

导致你虽然退出了,com还没有自己释放。
[/Quote]


我是这样调用 的。 下面的代码是客户端。 COM组件是我用ATL写的 Idispatch的。 你看看有问题吗?
try
{
// 通过构造函数启动组件
CoInitialize(NULL);

IReadDataPtr spDisp( _T("gsoapCom.ReadData.1") );
//STDMETHODIMP CReadData::soap_data_load(BSTR userid, BSTR passwd, LONG beginTime, LONG endTime,BSTR* strValue)
strValue = spDisp->soap_data_load("http://61.172.252.204:32078","3595","dqvC/KClTdgSrSjk0ttCIvCpDjtgyFZCs4DV2p4S2mw=",1247400601,1247487001);

CoUninitialize();

}
catch(_com_error &e)
{
AfxMessageBox( e.ErrorMessage() );
}
笑对人生 2009-07-15
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 bottlebox 的回复:]
可以试下调试服务器,调用程序选客户程序。
[/Quote]


能说一下具体怎么做吗? 调试服务器是什么?

瓶盒 2009-07-15
  • 打赏
  • 举报
回复
可以试下调试服务器,调用程序选客户程序。
枫桦沐阳 2009-07-15
  • 打赏
  • 举报
回复
addref release没控制好吧?

导致你虽然退出了,com还没有自己释放。
笑对人生 2009-07-15
  • 打赏
  • 举报
回复
反注册试了。不行
NineheadedBird 2009-07-15
  • 打赏
  • 举报
回复
把COM组件 反注册下 看看
笑对人生 2009-07-15
  • 打赏
  • 举报
回复
我已经注销几十次了。严重影响心情和效率 。大交帮帮忙啊
笑对人生 2009-07-15
  • 打赏
  • 举报
回复
我只是用 VS2003打开的 COM组件, 和客户端程序

没配置 COM+。或者什么服务。 我也不知道怎么配置。

我的 测试程序 关了。 并且把 debug文件夹 删除都不行。

如果是这么简单的话我 是能 找到问题的。
贪玩的老鼠 2009-07-15
  • 打赏
  • 举报
回复
把你的测试程序关了就可以了,
如果你配置了COM+,或者是服务的话,
你把COM+停掉,服务关掉就可以了!
如果你是网页加载的,你把浏览器关掉就可以了

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧