我有这样一个mquadprog.m文件
function X=mquadprog(IYield,MYield)
A=ones(1, size(IYield,1));
options=optimset('LargeScale','off');
f=(-2*IYield*MYield')./size(IYield,2);
b=1;
H=2*IYield*IYield'./size(IYield,2);
lb=zeros(size(IYield,1),1);
ub=ones(1, size(IYield,1));
X = quadprog(H,f,A,b,A,b,lb,ub,[],options);
然后用这个m文件生成了c++的 myquadprog.dll,myquadprog.h,myquadprog.lib 3个文件
然后在vc60里面建了一个MFC的工程,里面定义了这样一个方法:
extern "C" _declspec(dllexport) double * MatCreateDoubleD(double IYield[],int row1,int col1,double MYield[],int row2,int col2)
在这个函数里面应用了上面m文件中的方法
mlfAssign(&C,mlfMquadprog(A,B));

在delphi中声明,引用
function MatCreateDoubleD(IYield:dar;l_row1,l_col1:Integer;MYield:dar;l_row2,l_col2:Integer):Pdar;cdecl;

之后在delphi的程序中调用这个函数,程序会自动退出

在c++里面跟踪了一下,程序每次执行到 mlfAssign(&C,mlfMquadprog(A,B));就会异常退出,而我把这个去掉是可以调用的,但是如果不调用的话,就没有意义了,目的就是为了调用。
还有,我又写了一个简单的m文件,function y = add_zh(a,b)    
y=a+b,这个调用是没有问题的。

为什么m文件中如果出现了如 quadprog这种二次线性函数就不行了呢?
请高手帮忙看看,小弟实在是找不到办法了。先谢谢啦

我的msn: zhangwei494@hotmail.com
qq:33417531