📄 arraycomplex.cpp
字号:
// arraycomplex.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "stdio.h"
//#include "comutil.h"
#include "mwcomutil.h"
#import "D:\MATLAB6p5p1\bin\win32\mwcomutil.dll" raw_interfaces_only
#include "arraypasscom_1_0.h"
int main(int argc, char* argv[])
{
// Initialize COM
if ((FAILED(CoInitialize(NULL))))
{
printf("CoInitialize failed.\n");
exit(1);
}
MWComUtil::IMWComplexPtr pComplexIn1;
MWComUtil::IMWComplexPtr pComplexIn2;
MWComUtil::IMWStructPtr pStruct;
//MWComUtil::IMWFlagsPtr pFlags;
HRESULT hr,hr1,hr2;
hr1=pComplexIn1.CreateInstance(__uuidof(MWComUtil::MWComplex));
hr2=pComplexIn2.CreateInstance(__uuidof(MWComUtil::MWComplex));
//pFlags.CreateInstance(__uuidof(MWComUtil::MWFlags));
//hr2=pStruct.CreateInstance(__uuidof(MWComUtil::MWStruct));
//pComplexIn1.
if((FAILED(hr1)||FAILED(hr2)))
//if(FAILED(hr2))
{
printf("输入复数型数组创建失败!\n");
return FALSE;
}
VARIANT varReal[2],varImag[2];
VARIANT varOutComplex;
VARIANT varComplexIn1,varComplexIn2;
VariantInit(&varOutComplex);
VariantInit(&varComplexIn1);
VariantInit(&varComplexIn1);
int i=0,j=0;
for(i=0;i<2;i++)
{
VariantInit(&varReal[i]);
varReal[i].vt=VT_R8|VT_ARRAY;
VariantInit(&varImag[i]);
varImag[i].vt=VT_R8|VT_ARRAY;
}
SAFEARRAY * pa[4];
SAFEARRAYBOUND bound={4,0};
double * data=NULL;
for(i=0;i<4;i++)
{
pa[i]=SafeArrayCreate(VT_R8,1,&bound);
SafeArrayAccessData(pa[i],(void**)&data);
for(j=0;j<4;j++)
{
data[j]=j+i;
}
SafeArrayUnaccessData(pa[i]);
}
varReal[0].parray=pa[0];
varReal[1].parray=pa[2];
varImag[0].parray=pa[3];
varImag[1].parray=pa[4];
Iarraypasscom * pArrayPasscom=NULL;
hr=CoCreateInstance(CLSID_arraypasscom,NULL,CLSCTX_ALL,IID_Iarraypasscom,(void**)&pArrayPasscom);
if(FAILED(hr))
{
printf("Iarraypasscom 创建失败\n");
return 0;
}
pComplexIn1->put_Real(varReal[0]);
pComplexIn1->put_Imag(varImag[0]);
pComplexIn2->put_Real(varReal[0]);
pComplexIn2->put_Imag(varImag[0]);
varComplexIn1.vt=VT_DISPATCH;
varComplexIn2.vt=VT_DISPATCH;
pComplexIn1->QueryInterface(IID_IDispatch,(void**)&varComplexIn1.pdispVal);
pComplexIn2->QueryInterface(IID_IDispatch,(void**)&varComplexIn2.pdispVal);
pArrayPasscom->addcomplexarray(1,&varOutComplex,varComplexIn1,varComplexIn2);
//pArrayPasscom->get_MWFlags(&pFlags);
//pFlags->get_DataConversionFlags(
printf("输入复数数组1\n");
pArrayPasscom->displayarray(varComplexIn1);
printf("输入复数数组2\n");
pArrayPasscom->displayarray(varComplexIn2);
printf("相加后的输出复数数组1\n");
pArrayPasscom->displayarray(varOutComplex);
VariantInit(&varOutComplex);
VariantInit(&varComplexIn1);
VariantInit(&varComplexIn1);
for(i=0;i<2;i++)
{
VariantInit(&varReal[i]);
VariantInit(&varImag[i]);
}
SafeArrayDestroy(pa[0]);
SafeArrayDestroy(pa[1]);
SafeArrayDestroy(pa[2]);
SafeArrayDestroy(pa[3]);
pComplexIn1->Release();
pComplexIn1=NULL;
pComplexIn2->Release();
pComplexIn2=NULL;
pa[0]=NULL;
pa[1]=NULL;
pa[2]=NULL;
pa[3]=NULL;
CoUninitialize();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -