每日签到积分充值书码绑定

MATLAB技术论坛

 找回密码
 注册帐号

QQ登录

只需一步,快速开始

查看: 4514|回复: 21

[教程] Matlab2008a与C++混编   [复制链接]

副校长

云是风的梦

Rank: 15Rank: 15Rank: 15

该用户从未签到

UID
43602
主题
17
帖子
1097
积分
4232
威望
127
贝壳
1274
贡献
2886

雷锋转世 原创先锋 在线达人

发表于 2010-12-4 15:56:31 |显示全部楼层 | 百度  谷歌 |
本帖最后由 lijinfeng042 于 2010-12-4 16:22 编辑

看着教程,经过一天多的调试,终于看到结果了,先上图再说,哈哈
第一次成功编译m2010_12_03_20_51.jpg


基本上‍,步骤和7.0变化还是不大,但是和6.5就比较大了~从网上查了不少经验可惜都没有2008a这个版本的 只有自己仿照

taohe大大的这篇帖子:http://forum.simwe.com/thread-801187-1-1.html以及matlabsky论坛的rocwoods的教程http://www.matlabsky.com/thread-10041-1-1.html,前文是VS2005+Matlab2007b 后面的是 Matlab2010b+VC++ 编译环境差别还是有一些的 经过反反复复错误和配置,终于可以看到结果啦


关键的还是那个 Matlab改变对编译成的dll文件内容有差别 2008a以后,Mathworks公司对mclmcrrt.h 和 mclmcr.h头文件做了修改,要求mclmcr.h必须include在mclmcrrt.h之后。


一 在Matlab里面配置编译dll环境


    运行 mbuild -setup 设置好编译器后


二 执行编译命令


mcc -W cpplib:链接库名 -T link:lib m文件名 -C 或 mcc -l m文件名


三 建立一个VC项目,配置环境


①vc主界面进入project>Settings,点C/C++选项卡,Category选择Preprocessor,Additional    include directories下填入如下matlab的路径

matlabroot\extern\include


②点“link”选项卡,Category选择General,在下面的Object/library modules 那栏的最后添加

libmyadd2.lib mclmcrrt.lib


③然后Category选择input,Additional    library path下填写:

matlabroot\extern\lib\win32\microsoft


四 把编译好的文件复制进项目文件夹,把头文件*.h添加进工程


五. OK,可以写程序 编译了
经常错误的地方就是头文件的问题
  1. #include "stdafx.h"
  2. #include <iostream>
  3. #include "libmyadd2.h"  //编译函数的头文件
  4. #include "mclmcr.h"   //区别2010版本 这里没有
  5. #include "mclcppclass.h"  ////区别2010版本 这里没有
复制代码
mxArry的转换还是比较麻烦 mlf开头的函数调用也是.... 函数接口要求比较高 VB调用相对是简单不少
如果运行提示 无法找到mclmcrrt78.dll  不同版本matlab稍有不一样。就是没有安装MCRInstaller  ,安装路径\toolbox\compiler\deploy\win32下找,缺少mclmcrrt78.dll建议重装下MCRInstaller.exe
已有 1 人评分威望 收起 理由
dynamic + 2 美好的事情大家一起分享

总评分: 威望 + 2   查看全部评分


工作之余,自娱自乐~

副校长

云是风的梦

Rank: 15Rank: 15Rank: 15

该用户从未签到

UID
43602
主题
17
帖子
1097
积分
4232
威望
127
贝壳
1274
贡献
2886

雷锋转世 原创先锋 在线达人

发表于 2010-12-4 16:02:21 |显示全部楼层
至于为什么选择Matlab2008a,因为是最后一个Maple内核的版本,而且启动非常快,不用看着initializing....听着硬盘在滋滋的响~

工作之余,自娱自乐~

道具 举报

Rank: 15Rank: 15Rank: 15

该用户从未签到

UID
24562
主题
62
帖子
631
积分
2636
威望
53
贝壳
1046
贡献
1173
发表于 2010-12-4 16:41:52 |显示全部楼层
MATLAB技术论坛"有偿编程担保制度" "技术团队资格认证""官方有偿编程团队",保证您有偿编程安全。
呵呵,祝贺楼主的研究心得!

另外,我感觉,使用matlab生成dll的麻烦在于:
如果该dll是用Matlab2008a生成的,用户电脑就要安装Matlab2008a的MCRInstaller 。
如果该dll是用Matlab2009a生成的,用户电脑就要安装Matlab2009a的MCRInstaller 。
如果该dll是用Matlab2010a生成的,用户电脑就要安装Matlab2010a的MCRInstaller 。

如果用户使用多个依赖matlab生成的dll的程序,用户电脑上可能就要安装多个版本的MCRInstaller 。

道具 举报

副校长

云是风的梦

Rank: 15Rank: 15Rank: 15

该用户从未签到

UID
43602
主题
17
帖子
1097
积分
4232
威望
127
贝壳
1274
贡献
2886

雷锋转世 原创先锋 在线达人

发表于 2010-12-4 17:12:29 |显示全部楼层
回复 forcal 的帖子

嗯 就是 如果是需要用到他的工具箱及函数那就没有办法啦 只有老实地弄
本是想弄那个函数的 可惜c++的底子有限啊 装了vs2005和vc 最后居然编译一直不成功 没办法 还原了系统.....
自己写C/C++算法想法是好的 就是难度也大啊 用Matlab本来就是为了减少技术计算的开发时间,而且简单易用 安装一个额外的环境还是可以接受的 基本上选择一个版本就够啦 毕竟到后面版本那个MCRInstaller 也是越来越巨大啊 得不偿失的感觉
但是你的那个FORCAL扩展动态库 很强大了 近来恶补C++ 也开始会用一些了 非常感谢 forcal兄弟的努力啊

工作之余,自娱自乐~

道具 举报

Rank: 15Rank: 15Rank: 15

该用户从未签到

UID
24562
主题
62
帖子
631
积分
2636
威望
53
贝壳
1046
贡献
1173
发表于 2010-12-4 19:26:52 |显示全部楼层
MATLAB技术论坛"有偿编程担保制度" "技术团队资格认证""官方有偿编程团队",保证您有偿编程安全。
回复 lijinfeng042 的帖子

呵呵,感谢你一直关注Forcal。
最近,为方便用户使用,我又写了个GForcal,GForcal可看作应用程序与Forcal脚本系统之间的一个接口,但使用更简单。
参考:http://www.forcal.net/sysm/forcal9/fchtm/gforcal.htm

道具 举报

管理员

风雪夜归人

Rank: 30Rank: 30Rank: 30Rank: 30

签到天数: 12 天

[LV.3]偶尔看看II

UID
1
主题
1390
帖子
5053
积分
70501
威望
778
贝壳
53863
贡献
4889

管理团队 技术小组 原创先锋 宣传大使

发表于 2010-12-5 08:56:10 |显示全部楼层
哈哈 我最近也是在恶补c++,哈哈c++的能力还是很强大的,就是使用不太方便

道具 举报

副校长

czzc829z

Rank: 15Rank: 15Rank: 15

该用户从未签到

UID
33962
主题
14
帖子
366
积分
1795
威望
20
贝壳
692
贡献
1613
发表于 2010-12-5 10:27:04 |显示全部楼层
MATLAB技术论坛"有偿编程担保制度" "技术团队资格认证""官方有偿编程团队",保证您有偿编程安全。
geilivable

道具 举报

Rank: 1

该用户从未签到

UID
82750
主题
1
帖子
6
积分
18
威望
0
贝壳
1
贡献
10
软件版本
R2008a (7.6)
研究领域
技术计算
发表于 2011-1-5 11:35:25 |显示全部楼层
本帖最后由 goldier 于 2011-1-5 11:38 编辑

回复 lijinfeng042 的帖子

你好,我初次接触这个,为什么总是出现下面的错误啊

'mbuild' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
Error: An error occurred while shelling out to mbuild (error code = 1).
Unable to build executable (specify the -v option for more information).
??? Error using ==> mcc
Error executing mcc, return status = 1.
急盼指教。

我在命令窗口的输入如下:
mbuild -setup
Please choose your compiler for building standalone MATLAB applications:

Would you like mbuild to locate installed compilers [y]/n? y

Select a compiler:
[1] Lcc-win32 C 2.4.1 in D:\PROGRA~1\MATLAB\R2008a\sys\lcc
[2] Microsoft Visual C++ 2008 in D:\Program Files\Microsoft Visual Studio 9.0

[0] None

Compiler: 1

Please verify your choices:

Compiler: Lcc-win32 C 2.4.1
Location: D:\PROGRA~1\MATLAB\R2008a\sys\lcc

Are these correct [y]/n? y

Trying to update options file: C:\Documents and Settings\dell\Application Data\MathWorks\MATLAB\R2008a\compopts.bat
From template:              D:\PROGRA~1\MATLAB\R2008a\bin\win32\mbuildopts\lcccompp.bat

Done . . .

>> mcc -m triang_radial_adjust.m
'mbuild' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
Error: An error occurred while shelling out to mbuild (error code = 1).
Unable to build executable (specify the -v option for more information).
??? Error using ==> mcc
Error executing mcc, return status = 1.
我的机子上也装了Visual Studio 2008,编译器选2出来的错误也是一样。
还有,我换了一下其他的m文件也出现同样的提示。

道具 举报

副校长

云是风的梦

Rank: 15Rank: 15Rank: 15

该用户从未签到

UID
43602
主题
17
帖子
1097
积分
4232
威望
127
贝壳
1274
贡献
2886

雷锋转世 原创先锋 在线达人

发表于 2011-1-5 14:04:38 |显示全部楼层
MATLAB技术论坛"有偿编程担保制度" "技术团队资格认证""官方有偿编程团队",保证您有偿编程安全。
回复 goldier 的帖子

证明你的安装没问题 看来 提示这个错误和有时候dos命令运行不了一样 应该是系统默认路径问题 改一下环境变量就可以了
在path加多一句:matlabroot\bin;重启matlab就可以
这里matlabroot指的是matlab根目录 在matlab运行这个就知道了

工作之余,自娱自乐~

道具 举报

Rank: 1

该用户从未签到

UID
82750
主题
1
帖子
6
积分
18
威望
0
贝壳
1
贡献
10
软件版本
R2008a (7.6)
研究领域
技术计算
发表于 2011-1-5 14:37:30 |显示全部楼层
回复 lijinfeng042 的帖子

非常谢谢你的提醒,我把环境变量改了
再次运行,又出现这样的错误,这会是什么原因造成的啊
>>mcc -m mywavelet.m
'cmd' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
Error: An error occurred while shelling out to mbuild (error code = 1).
Unable to build executable (specify the -v option for more information).
??? Error using ==> mcc
Error executing mcc, return status = 1.

道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

关闭

站长推荐

MATLAB技术论坛数据挖掘公开课开课啦!
MATLAB技术论坛数据挖掘公开课开课啦!
MATLAB技术论坛将为大家奉献N期MATLAB数据挖掘公开课。公开课的安排为综合篇+专题篇,现在第一期数据挖掘概论已经出来了,更多视频敬请关注。。。

查看 »

网站简介 | 发展历程 | 特色业务 | 管理团队 | 免责声明 | 广告服务 | 联系我们 | 付款方式 | 友情链接 | 帮助中心

商务合作:455681698   服务邮箱:matlabsky@gmail.com   支付宝:yuthreestone@163.com

合作站点:数模联盟 函数百科 网上商城   出版单位:北航出版社 道然科技   开发平台:Discuz! X2

CopyRight © 2008-2012 迈粉网 ( 陕ICP备08102094号 ) All Rights Reserved

排行热榜|网站地图|手机浏览|管理邮箱||     

GMT+8, 2012-5-19 05:25 , Processed in 0.192680 second(s), 31 queries , Gzip On, Xcache On.

回顶部