专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > DotNet Exception

VC传递C#做tlb组件方法字符串参数报错

发布时间:2011-06-26 20:26:47 文章来源:www.iduyao.cn 采编人员:星星草

VC传递C#做tlb组件方法字符串参数报错:

c#组件中AddPara接口定义如下,AddPara中无任何实现代码

[Guid( "154BD6A6-5AB8-4d7d-A343-0A68AB79470B ")]

public interface McuDB_Interface
{
[DispId(1)]
void AddPara(string paraname, string paravalue);

导入后,生成的接口代码如下:
HRESULT AddPara (
_bstr_t paraname,
_bstr_t paravalue );

VC调用关键代码如下:
CString _temp;
_temp = "fsdfkfsdf ";
BSTR bstrValue = _temp.AllocSysString();
for(int i=0;i <2000;i++)
{
mcuDb-> AddPara(bstrValue, bstrValue);
}

当AddPara接口被多次调用时候,EXE必然崩溃;而小于200次以下的循环,越少越不会报错!

另外如果是非字符参数的方法调用,则无任何问题,估计是参数传递问题!

请高手指教应如何处理!!

------解决方法--------------------------------------------------------
参数类型是传进还是传出,tlb函数中具体做了什么操作。
------解决方法--------------------------------------------------------
配对交和

AllocSysString
SysFreeString


谁来释放 heap 内存, 是个问题,
------解决方法--------------------------------------------------------
你的 VC 调用端, 分配了内存, 让组件用的爽了后, 记得自己释放

------解决方法--------------------------------------------------------
改一下参数类型

    
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: