| 查看: 2361 | 回复: 8 | ||
| 本帖产生 1 个 程序强帖 ,点击这里进行查看 | ||
[求助]
VS2005下matlab调用
|
||
|
提示有如下错误 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: 2 个无法解析的外部命令 是怎么回事啊? 谢谢 |
» 猜你喜欢
自荐读博
已经有9人回复
投稿Elsevier的杂志(返修),总是在选择OA和subscription界面被踢皮球
已经有8人回复
自然科学基金委宣布启动申请书“瘦身提质”行动
已经有4人回复
求个博导看看
已经有18人回复
» 本主题相关价值贴推荐,对您同样有帮助:
《MATLAB数学手册 复合版》快速编程的法宝,要的赶快下了哇!
已经有501人回复
matlab的函数调用问题
已经有3人回复
matlab作业哪位大神麻烦给做一下,十万火急,周五之间要交
已经有3人回复
intel fortran 如何调用 matlab里面的函数
已经有5人回复
【求助】matlab 中,几个m文件调用
已经有14人回复
【求助】弱弱的问一下Matlab数据提取的问题
已经有5人回复
【求助】用matlab编程,需要将数据自检分类(高手进来指点下)
已经有5人回复
【求助】怎么装visual C++编译器?
已经有4人回复
【求助】VS2005数值计算程序调试【急求!!!!加金币】
已经有9人回复
2楼2011-05-04 15:36:38
yalefield
金虫 (文坛精英)
老汉一枚
- 程序强帖: 3
- 应助: 129 (高中生)
- 贵宾: 0.17
- 金币: 21238.9
- 散金: 3440
- 红花: 66
- 帖子: 12101
- 在线: 759.1小时
- 虫号: 96063
- 注册: 2005-10-07
- 专业: 高等教育学
- 管辖: 计算模拟
3楼2011-05-04 15:43:50
sudo
木虫 (正式写手)
- 程序强帖: 16
- 应助: 6 (幼儿园)
- 金币: 1297.6
- 散金: 1486
- 红花: 20
- 帖子: 588
- 在线: 641小时
- 虫号: 1211394
- 注册: 2011-02-24
- 性别: GG
- 专业: 文艺美学
【答案】应助回帖
★ ★ ★
余泽成(金币+3): 谢谢参与应助! 2011-05-04 22:50:26
余泽成(金币+3): 谢谢参与应助! 2011-05-04 22:50:26
|
到MATLAB安装目录下,比如 ...\MATLAB\R2010a\extern\lib\win32\microsoft 然后在VC链接器的输入的附加依赖项里面添加需要的lib文件(写绝对路径) 需要的库可能是这些 libeng.lib libmat.lib libmatlb.lib libmatlbmx.lib libmex.lib libmwarpack.lib libmwlapack.lib libmx.lib 本来刚看到的时候就想回复了,但是想想太麻烦....楼主可以自己找一找那些缺的函数定义在什么lib里面....上面列出来的估计有多余也可能有缺的... |
4楼2011-05-04 15:49:37
5楼2011-05-05 22:22:36
|
#include #include #include "engine.h" //添加MATLAB引擎头文件 #include using namespace std; int main() { //定义x,y数组并赋初值 const int N=20; double x[N],y[N]; for (int i=0;i x=i+1; y=x*x; } Engine *ep; //定义MATLAB引擎指针变量 if(!(ep=engOpen(NULL))) //打开MATLAB引擎 { cout<<"can't start MATLAB engine!"< } //利用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!"< engClose(ep); return 0; } 这是源码,从网上找的,我只是想配置好以后在一个大程序里调matlab函数进行计算和绘图。 |
6楼2011-05-05 22:24:44
sudo
木虫 (正式写手)
- 程序强帖: 16
- 应助: 6 (幼儿园)
- 金币: 1297.6
- 散金: 1486
- 红花: 20
- 帖子: 588
- 在线: 641小时
- 虫号: 1211394
- 注册: 2011-02-24
- 性别: GG
- 专业: 文艺美学
【答案】应助回帖
★ ★
微尘、梦想(金币+2, 程序强帖+1): 2011-05-06 19:46:24
zcyay(金币+1): 2011-10-11 15:36:50
微尘、梦想(金币+2, 程序强帖+1): 2011-05-06 19:46:24
zcyay(金币+1): 2011-10-11 15:36:50
|
测试了一下,确实添加libmx.lib;libeng.lib;libmex.lib;三个库就够了 测试的代码也是你给的那个,结果是显示一个曲线 环境是VS2010+MATLAB2010a (编译过程遇到一个问题,是MATLAB2010a的一个头文件的小BUG,估计跟楼主的问题无关,修改之后就OK了) 可能是你的库没有添加正确~看你的报错,属于链接期错误... 另外代码贴在【code】【/code】框里会比较好看,把前面中文的中括号换成英文的... |
7楼2011-05-06 09:23:21
sudo
木虫 (正式写手)
- 程序强帖: 16
- 应助: 6 (幼儿园)
- 金币: 1297.6
- 散金: 1486
- 红花: 20
- 帖子: 588
- 在线: 641小时
- 虫号: 1211394
- 注册: 2011-02-24
- 性别: GG
- 专业: 文艺美学
★ ★
微尘、梦想(金币+2): 2011-05-06 19:46:34
微尘、梦想(金币+2): 2011-05-06 19:46:34
|
注意一下: 项目属性->链接器->常规->附加库目录 还有 项目属性->链接器->输入->附加依赖项 这两个地方~ 正确填写lib文件所在的路径以及lib文件名之后,编译应该就能成功了... 接着是运行 运行的时候可能会报找不到dll文件,只要将dll文件的路径,比如 D:\Program Files\MATLAB\R2010a\bin\win32 添加到系统环境变量里面的PATH中,就可以了(如果嫌这一步麻烦,可以直接拷贝dll文件到C:\windows\system32目录下,提示缺哪个就拷哪个) 可能需要若干个dll文件,楼主可以慢慢实验 |
8楼2011-05-06 09:30:20
daijyan
木虫 (正式写手)
- 应助: 1 (幼儿园)
- 金币: 1922.5
- 散金: 32
- 帖子: 310
- 在线: 136.6小时
- 虫号: 1170161
- 注册: 2010-12-14
- 性别: MM
- 专业: 模式识别

9楼2012-03-25 19:18:24







回复此楼
;//通过引擎调用MATLAB中plot(x,y)函数,绘制函数曲线