声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3205|回复: 8

[混合编程] VC和matlab混合编程问题

[复制链接]
发表于 2007-4-28 23:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
发表于 2007-4-28 23:49


MATLAB和C++的问题

To get started, select MATLAB Help or Demos from the Help menu.
>> mex afdtdpbg.c
Specified export _mexFunction is not defined
Missing exports. Aborting

  D:\MATLAB7.0\BIN\WIN32\MEX.PL: Error: Link of 'afdtdpbg.dll' failed.

??? Error using ==> mex
Unable to complete successfully
>>

这个是运行时的代码,MEX.PL就是一个记事本,是不是在编写上有什么问题呢,MET-SETUP和SBUILD-SETUP已经建立好了,两个C++的程序已经贴到WORK目录下了,下面是MEX.PL的程序,大家帮忙想想是怎么了
MEX.PL的内容太多了,我把它用两个附件发了上来,大家看看吧,谢谢了



[ 本帖最后由 eight 于 2007-4-29 00:17 编辑 ]

1.doc.doc

173.5 KB, 下载次数: 19

2.doc.doc

140.5 KB, 下载次数: 9

回复
分享到:

使用道具 举报

 楼主| 发表于 2007-4-29 00:02 | 显示全部楼层
来帮帮我啊
发表于 2007-4-29 00:24 | 显示全部楼层
原帖由 dongjun1101 于 2007-4-29 00:02 发表
来帮帮我啊

matlab不能直接编译 c 的文件,需要满足一定的格式的 c 文件才能用 mex 编译,具体请参考图中的帮助:
cmex.bmp
发表于 2007-4-29 02:13 | 显示全部楼层
R13下,由于提供了C/C++数学库
借此好处
MATLAB可以直接编译C格式的
但不是编译MEX
而是mbuild
7.0的没有用过
不知道mbuild如何了
楼主参考看MATLAB的extern\examples\mex下的目录吧

[ 本帖最后由 shunfly 于 2007-4-29 02:16 编辑 ]

评分

1

查看全部评分

发表于 2007-4-30 11:02 | 显示全部楼层
高手帮忙啊!为什么输入mbuild -setup时,而输出结果是??? Undefined command/function 'mbuild'.
Give me help!
发表于 2007-4-30 12:23 | 显示全部楼层
不就是编译MEX文件么
直接在VC中建立WIN32动态链接库
在DEF文件定义导出函数为mexFunction
在CPP源文件中直接写代码
或者COPY MATLAB的例子
注意设置VC的工程
包含MATLAB的INCLUDE和LIB
LINK MATLAB的lib库
PS:仔细看清楚我上面说的
       看MATLAB的例子
你把例子编译成功了,你就会了

[ 本帖最后由 shunfly 于 2007-4-30 12:30 编辑 ]

评分

1

查看全部评分

发表于 2007-4-30 14:27 | 显示全部楼层
上楼,你能不能详细讲解下你所讲的每一步具体怎么设置,因为VC++刚学,没设置过环境,拜托啦!
 楼主| 发表于 2007-4-30 19:46 | 显示全部楼层
虽然它一直报错,但是我的DLL文件已经生成了,这样计算出来的结果会不会不对啊
发表于 2007-4-30 21:42 | 显示全部楼层
.........
一下针对MATLAB6.5 + VC6.0
MATLAB7没用过,请参考《深入浅出MATLAB7.X混合编程》
好好的搜索引擎怎么就不喜欢利用了?
VC --- FILE ---- NEW ---PROJECTS ---- WIN32 Dynamic Link Library
建立空DLL工程 名:MatlabDll
添加 MatlabDll.cpp文件
内容:
  1. #include "mex.h"
  2. #pragma comment(lib,"libmx.lib")
  3. void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray*prhs[])
  4. {
  5.         plhs[0]      = mxCreateDoubleMatrix(1,1,mxREAL);
  6. }
复制代码
添加 MatlabDll.def文件
内容:
  1. LIBRARY      "MatlabDll.DLL"
  2. EXPORTS       mexFunction
复制代码
因为包含了mex.h,链接了libmx.lib
所以
VC - Tools  ---Options ---Directories ----
                                  Include Files
                                                    添加MATLAB的include路径
                                  大概为MATLAB65\EXTERN\INCLUDE
                                  Library Files
                                                    添加MATLAB的iLib路径
                                  大概为MATLAB65\EXTERN\INCLUDE
                                  MATLAB65\EXTERN\LIB\WIN32\MICROSOFT\MSVC60

[ 本帖最后由 shunfly 于 2007-4-30 21:43 编辑 ]
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-5 04:52 , Processed in 0.085066 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表