vc++调用com组件(variant参数传递问题)
在此先表示感谢!
我做了一个测试程序,主要目的是在vc++中调用matlab的com组件。其中matlab 的com组件中是一个小函数:如下
function []=plot_sin(a)
x=0:0.1:a*pi;
y=sin(x);
plot(x,y);
end
然后,在vc++中调用此函数做成的com组件 具体调用如下:
void CShitDlg::OnBtnSin()
{
// TODO: Add your control notification handler code here
UpdateData();
VARIANT val;
VariantInit(&val);
VariantClear(&val);
val.vt = VT_I4; // 设置类型
val.lVal = m_num1; // 设置变量值
if(FAILED(CoInitialize(NULL)))//COM初始化
{
MessageBox("Error");
}
IFuck *pclass=NULL;
HRESULT hr=CoCreateInstance(CLSID_fuck,NULL,CLSCTX_ALL, IID_IFuck, (void **)&pclass);
if(SUCCEEDED(hr))
{
hr=pclass->plot_sin(val);//函数调用
}
VariantClear(&val);
}
问题出在“hr=pclass->plot_sin(val);//函数调用 ” 这一句。
当我在编辑框中输入一个数据之后,并保存在成员变量m_num1中,然后把m_num1转换成varian类型,作为plot_sin()的实参,传递进去。但是当退出plot_sin()时没有显示应有的图形。但是也没有报错!也许是我的代码写的有问题!
希望老师给予解答,还有希望老师推荐com技术的基础书籍,特别是关于vc++和matlab混合编程的书籍!
在此表示感谢!