急!!!matlab和VC的混合编程

breaksoftware
博客专家认证
2008-01-23 08:39:52
小弟最近接到一个任务,是将matlab里的linprog.m文件转化为VC可以编译的CPP文件。我在网上找了相关资料,安装了VC6.0和matlab6.5结合,还有用MIDEVA。我先用MIDEVA将linprog.m转化为CPP文件,并将生成的相关文件加入到一个VCwin32控制台的项目中,并且设置了相关路径(如库文件目录)。在编译时会出现错误:
c:\matlab6p5\extern\include\cpp\dblmtrx.h(517) : error C2440: '=' : cannot convert from 'void *' to 'struct mxArray_tag *'
Conversion from 'void*' to pointer to non-'void' requires an explicit cast
c:\matlab6p5\extern\include\cpp\mlmif.h(9) : error C2440: '=' : cannot convert from 'void *' to 'struct mxArray_tag *'
Conversion from 'void*' to pointer to non-'void' requires an explicit cast
都是这类的问题,即在诸如:
inline mwArray _colonobj(const mwArray &in1=mwArray::DIN, const mwArray &in2=mwArray::DIN, const mwArray &in3=mwArray::DIN)
{
int nrhs = 0;
int nlhs = 1;
MatlabMatrix *plhs[1];
plhs[0] = NULL;
MatlabMatrix *prhs[3];
if (!in1.IsDIN()) {
prhs[nrhs++] = in1.GetData();
if (!in2.IsDIN()) {
prhs[nrhs++] = in2.GetData();
if (!in3.IsDIN()) {
prhs[nrhs++] = in3.GetData();
}
}
}
mlx_colonobj(nlhs, plhs, nrhs, prhs);
return plhs[0];
}
代码中plhs[0] = NULL;错了
请问是不是我的版本太低,导致对class 和 struct的不好的兼容。
哪位高手能给我一个详细而完整的解决方案,非常感谢。
假如您有时间,可以加我的QQ:304646673说一下么?
...全文
197 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
我啃 2008-01-29
  • 打赏
  • 举报
回复
:\matlab6p5\extern\include\cpp\dblmtrx.h(517) : error C2440: '=' : cannot convert from 'void *' to 'struct mxArray_tag *'

这样的问题手动在转换处加上强制类型转换,再编译~
laomai 2008-01-29
  • 打赏
  • 举报
回复
问题还没解决?
不行的话手工修改cpp文件吧,呵呵
星羽 2008-01-23
  • 打赏
  • 举报
回复
up

24,855

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧