com c++ c#
来源:互联网 发布:影视app全套源码 编辑:程序博客网 时间:2024/04/29 19:57
由于COM中不能直接使用数组,所以经常使用到SAFEARRAY与VARIANT的转换
SAFEARRAY* pSA;
SAFEARRAYBOUND aDim[1]; //定义安全数组维数
aDim[0].lLbound=0;
aDim[0].cElements=2; //一维数组的元素数
pSA=SafeArrayCreate(VT_R8,1,aDim); //创建类型为DOUBLE的数组
ASSERT(pSA);
long aLong[1];
for(unsigned long l=aDim[0].lLbound;l<(aDim[0].lLbound+aDim[0].cElements);l++)
{
DOUBLE vTmp;
vTmp=0.2*l;
aLong[0]=l;
SafeArrayPutElement(pSA,aLong,&vTmp); //插入元素
}
将SafeArray转成VARIANT
VARIANT var;
VARTYPE vt;
VariantInit(&var);
SafeArrayGetVartype(pSA,&vt);
var.vt = VT_ARRAY|VT_VARIANT;
var.parray=pSA;
COM中将VARIANT 转成 SafeArray
STDMETHODIMP CZStation::GetDStation(VARIANT* vStaList, DOUBLE* SUM){
DOUBLE* pValue=NULL;
SAFEARRAY* pArray=var.parray;
SafeArrayAccessData(pArray,(void**)&pValue);//
long Low(0),High(0);
获取数组的高位和低位
SafeArrayGetLBound(pArray,1,&Low);
SafeArrayGetUBound(pArray,1,&High);
LONG i;
DOUBLE SUM = 0;
for(i=Low; i<High-Low+1; i++)
{
*SUM += pValue[i];
}
return S_OK;
}
C#中调用COM
ZStation zst = new ZStationClass(); double dSta; double[] dlist = new double[2]; dlist[0] = 5.0; dlist[1] = 10.0; object vstalsit = dlist; dSta = zst.GetDStation(ref vstalsit);
VC++中调用COM
SAFEARRAY* pSA;
SAFEARRAYBOUND aDim[1];
aDim[0].lLbound=0;
aDim[0].cElements=2;
pSA=SafeArrayCreate(VT_R8,1,aDim);
ASSERT(pSA);
long aLong[1];
for(unsigned long l=aDim[0].lLbound;l<(aDim[0].lLbound+aDim[0].cElements);l++) {
DOUBLE vTmp;
vTmp=0.2*l;
aLong[0]=l;
SafeArrayPutElement(pSA,aLong,&vTmp);
}
CoInitialize(NULL);
double dsta;
CLSID clsid;
CLSIDFromProgID(OLESTR("ZGISCOM.ZStation"),&clsid);
CComPtr<IZStation> pStation;
pStation.CoCreateInstance(clsid);
double vv = pStation->GetDStation(&var);
pStation.Release();
CoUninitialize();
- C#调用C++COM组件
- 编写C++C#相互调用COM组件
- C++调用C#之C++DLL调用C# COM控件
- 关于C#与(C++)Com交互之数组传递
- .com .com .com .com .com .com .com.com .com .com .com .com .com .com.com .com .com .com .com .com .c
- c++&COM...
- C++,DLL,COM,COM+概述
- c#生成com+组件
- c#开发Com组件
- C#开发COM组件
- C# COM+ Programming
- C#调用COM组件
- 走近 C# + COM
- C#编写com+
- C#编写Com组件
- c#与com
- C#创建COM组件
- C#编写com+
- IOS开发基础之──main函数及预编译前缀头文件
- windows mysql提示:1045 access denied for user'root'@'localhost' using password yes
- 在 SQL Server 中的 bit 字段上建立索引吗?
- makefile(四)
- U-Boot添加命令的方法及U-Boot命令执行过程
- com c++ c#
- 诺基亚的策略
- 指针的那点事
- LINUX协议栈详解 网桥介绍
- VC关于子项目包含依赖问题(Dependency of)从msdn中读到的--Subprojects
- 大型网站架构分析收集
- 关于出现Name jdbc is not bound in this Context错误的解决
- SQL Profiler的过滤设置
- 请问哪位熟悉compass/lucene搜索引擎的啊