当前位置:编程学习 > C#/ASP.NET >>

VS2005调用matlab函数问题

感觉已经配置好了,可还是出现以下问题
1>matlab.obj : error LNK2019: 无法解析的外部符号 _engGetVariable,该符号在函数 _main 中被引用
1>matlab.obj : error LNK2019: 无法解析的外部符号 _engPutVariable,该符号在函数 _main 中被引用
1>matlab.obj : error LNK2019: 无法解析的外部符号 _mxCreateDoubleMatrix_730,该符号在函数 _main 中被引用
1>C:\Users\zhx\Documents\临时\matlab\Debug\matlab.exe : fatal error LNK1120: 3 个无法解析的外部命令
怎么回事啊,网上搜索根本找不到答案 救命啊 谢谢 --------------------编程问答-------------------- 没有人知道么 配置已经添加matlab头文件与库文件路径 --------------------编程问答-------------------- http://blog.donews.com/gentil/archive/2007/05/29/1170028.aspx --------------------编程问答--------------------
引用 2 楼 ssp2009 的回复:
http://blog.donews.com/gentil/archive/2007/05/29/1170028.aspx

谢谢,我不是用的C#,也可以这样调用么?
怎么解决我的问题啊…… --------------------编程问答-------------------- 各位帮帮忙啊 --------------------编程问答-------------------- 崩溃了啊 还是没解决 --------------------编程问答-------------------- 看看是否与matlab头文件的数据类型一致 --------------------编程问答-------------------- 无法解析的外部符号
  该符号在函数 _main 中被引用

————————————————————


应当是 这个 特殊符号的问题

--------------------编程问答-------------------- 有时候报错的地方并一定有错,是其他地方的问题导致的 --------------------编程问答--------------------
引用 6 楼 csu_ly013 的回复:
看看是否与matlab头文件的数据类型一致

engine.h那个头文件很乱 有上述函数 不过前面有*号 --------------------编程问答--------------------
引用 7 楼 fengyarongaa 的回复:
无法解析的外部符号
  该符号在函数 _main 中被引用

————————————————————


应当是 这个 特殊符号的问题

就是这三个函数 --------------------编程问答--------------------
//调用MATLAB函数绘制函数曲线
#include <iostream>
#include <math.h>
#include "engine.h" //添加MATLAB引擎头文件
#include <string.h>
using namespace std;

int main()
{
//定义x,y数组并赋初值
const int N=20;
double x[N],y[N];
for (int i=0;i<N; i++)
{
x[i]=i+1;
y[i]=x[i]*x[i];

}
Engine *ep;     //定义MATLAB引擎指针变量
if(!(ep=engOpen(NULL))) //打开MATLAB引擎
{
cout<<"can't start MATLAB engine!"<<endl;
exit(1);
}
//利用MATLAB API mxCreateDoubleMatrix函数生成矩阵,即申请空间,MATLAB引擎中使用mxArray类型数据

mxArray *xx=mxCreateDoubleMatrix(1,N,mxREAL);//1行N列,mxREAL为实双精度矩阵
mxArray *yy=mxCreateDoubleMatrix(1,N,mxREAL);
//mxGetPr获取指向输入、输出矩阵数据的指针
memcpy(mxGetPr(xx),x,N*sizeof(double));//将数组 x 复制到 mxarray 数组 xx 中,即给xx数组赋值
memcpy(mxGetPr(yy),y,N*sizeof(double));


engPutVariable(ep,"xx",xx);//将 mxArray 数组 xx 写入到 Matlab 工作空间,命名为 xx 
engPutVariable(ep,"yy",yy);

engEvalString(ep,"plot(xx,yy)");//通过引擎调用MATLAB中plot(x,y)函数,绘制函数曲线
mxDestroyArray(xx); //释放内存
mxDestroyArray(yy);//释放内存

cout<<"press any key to exit!"<<endl;
cin.get();
engClose(ep);
return 0;
}
这是源代码 --------------------编程问答-------------------- 设个断点,调试看看 --------------------编程问答-------------------- 我也遇到这个问题了。是这么解决的

1)首先看看是否包含了libeng.lib等几个文件。
2)如果包含了的,那么就修改环境变量,然后重启。这个问题就应该能够解决了!
你需要将matlab下面的win32文件夹增加到环境变量中
具体见:http://hi.baidu.com/superql/blog/item/7ec2a6a12e2b53854610646f.html

PS:最后我还是重启了才解决的
补充:.NET技术 ,  VC.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,