首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

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

2014-01-28 
VC传递C#做tlb组件方法字符串参数报错:c#组件中AddPara接口定义如下,AddPara中无任何实现代码 [Guid( 154B

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 调用端, 分配了内存, 让组件用的爽了后, 记得自己释放

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

        

热点排行