vc调用matlab m函数生成的dll

时间:2021-12-30 14:03:37
vc7.1(vs2003)下基于对话框的程序调用matlab2009a里自己编写的Mylinprog(B)函数,在MyLinprog(B)函数里调用线性规划函数linprog(),传入的参数B为系数矩阵右侧的常数数值,忘了叫什么了。代码如下,

void CLinprogNewDlg::OnBnClickedButton1() //Button1为在对话框上新建立的一个按钮
{
// TODO: 在此添加控件通知处理程序代码
double b[3]={20,42,30};//要传入的参数
double X[3];//要传出的参数

mwArray mwB(1, 3, mxDOUBLE_CLASS);  
mwArray mwX(1, 3, mxDOUBLE_CLASS);

mwB.SetData(b, 3);

MyLinprog(1,mwX,mwB);

mwX.GetData(X,3);

CString str;
str.Format("%.0f",X[1]);//做实验,只求一个数值
MessageBox(str,"求和结果");

}
matlab m函数代码如下:
function [x] = MyLinprog(B)
f =[-5;-4;-6];
A = [1 -1 1;3 2 4;3 2 0];
b = B;
lb = zeros(3,1);
[x] = linprog(f,A,b,[],[],lb);
end
为matlab help文件的一个例子。
目标函数 f(x) = –5x1 – 4x2 –6x3,
约束条件 x1 – x2 + x3 ≤ 20
         3x1 + 2x2 + 4x3 ≤ 42
         3x1 + 2x2 ≤ 30
         0 ≤ x1, 0 ≤ x2, 0 ≤ x3.

包含文件都已设置好。
现在的问题运行程序,当第一次单击Button1按钮时,出现正确结果。证明设置正确。但是当第二次单击Button1按钮时,程序出现错误,弹出错误提示对话,显示“LinprogNew.exe 中的 0x7c812afb 处未处理的异常: Microsoft C++ exception: mwException @ 0x0012f3fc 。”。在网上搜索,有大侠说,指针越界或者数组溢出。还请过来人给指点一二。晚生感激不尽

4 个解决方案

#1


自己顶一下,希望大侠不吝赐教。

#2


自己再顶一下。希望大家帮帮忙。

#3


楼主最后解决问题了么,能否告诉我们呢。

#4


楼主怎么解决的,我也碰见这个问题,急呀。

#1


自己顶一下,希望大侠不吝赐教。

#2


自己再顶一下。希望大家帮帮忙。

#3


楼主最后解决问题了么,能否告诉我们呢。

#4


楼主怎么解决的,我也碰见这个问题,急呀。