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 调用端, 分配了内存, 让组件用的爽了后, 记得自己释放
------解决方法--------------------------------------------------------
改一下参数类型