声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2086|回复: 10

[混合编程] c++builder 是否可以调用MATLAB C MATH Library 实现混编

[复制链接]
发表于 2006-10-13 22:13 | 显示全部楼层 |阅读模式

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

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

x
请教: 是否可以通过调用MATLAB C MATH Library  实现c++builder 与matlab的混编

如果可以,如何设置,谢谢各位高人

[ 本帖最后由 lxq 于 2007-1-28 20:09 编辑 ]
回复
分享到:

使用道具 举报

 楼主| 发表于 2006-10-14 12:46 | 显示全部楼层
请教中
发表于 2006-10-14 14:06 | 显示全部楼层
Matlab提供了可外部连接的DLL文件,通过将其转换为相应的Lib文件,并加以必要的设置,就可以在C++Builder中直接进行Matlab函数调用,实现C++ Builder语言与Matlab语言的混合编程。
(1) 运行环境要求
由于Matlab提供的是32位的DLL。其运行环境要求是Matlab V4.2或更高版本。(2) C++Builder下LIB文件的生成
Matlab提供的Def文件允许用户通过Implib命令生成相应的Lib文件。其命令格式为
Implib .lib .def
在<matlab>externinclude目录下,提供了如下三个.Def文件:
_libeng.def,_libmat.def,_libmx.def
通过上述命令可以生成相应的三个Lib文件。这些Lib文碱中包含了可外部调用的Matlab函数的必要信息。

为了调用Matlab中的函数,必须进行必要的设置。以下是操作过程:
1. 在头文件中加入Engine.h。其包含了启动Matlab调用和关闭的函数声明。
2. 打开Project|Option...对话框,点击Directories/Conditionals。
● 在Include Path中,加入目录路径<matlab>externinclude,该路径包含了engine.h和matlab.h等有用的头文件。
● 在Library Path中,加入<matlab> in和<matlab>externinclude。这两个目录路径包含了可外部调用的DLL和LIB文件。
3. 点选Project|Add to Project...对话框,加入如下库文件:
_libeng.lib,_libmat.lib和_libmx.lib。
在进行了这些必要的设置之后,我们就可以选用适当的函数来实现目标。
 楼主| 发表于 2006-10-14 21:20 | 显示全部楼层
出现一堆链接错误
多是类似:
【linker Error】Unresolved external '_mlfEnterNewContext'

我想是C++builder 设置有问题,如何改?
发表于 2007-1-28 15:45 | 显示全部楼层

回复 #4 sally_mn 的帖子

我也遇到同样的问题啦,怎么解决啊?希望高手来看看啊!
发表于 2007-1-28 15:46 | 显示全部楼层

回复 #4 sally_mn 的帖子

我一打开引擎就出现你说的那个错误!
发表于 2007-1-28 16:12 | 显示全部楼层
发表于 2007-2-18 16:46 | 显示全部楼层
可以明确告诉你,答案是肯定的.
我前几天刚调通.
使用的是matlab6.5 BCB6.0
用matlab\extern\cmath 里面的例程来调.
设置BCB工程中的include和lib路径分别为:
Matlab安装路径\extern\include
Matlab安装路径\extern\lib\win32\borland\bc50
并在工程中把上述lib路径中的库文件全添进去.
编译便可通过,可以正常脱离matlab进行矩阵运算.
要了解更多数学库函数的用法可到下面网址下载到手册:
http://www.nbs.ntu.edu.sg/userguide/MatLab/MatLab6/mathlib.html

____这个问题困扰我多日,终于解决,故拿出来与大家分享,希望你们少走弯路.
(注: 调用matlab c math library固然通过,但调用matlab c++ math library还存在问题,不得其解)

评分

1

查看全部评分

发表于 2007-2-27 21:39 | 显示全部楼层
在bcb中,可以用matcom for bcb 实现类似的调用,更加方便,不过实现的功能有限。

但是,一般的矩阵运算没有问题
发表于 2007-3-14 19:49 | 显示全部楼层
请问兄台,手头上有matcom for bcb 吗? 我根本找不到呀!
发表于 2007-4-3 11:18 | 显示全部楼层

出现如下错误怎么回事呀?

出现如下错误怎么回事呀?谢谢
[C++ Error] Unit1.cpp(25): E2449 Size of 'DemoMatlab' is unknown or zero
  [C++ Error] Unit1.cpp(25): E2141 Declaration syntax error
  [C++ Error] Unit1.cpp(34): E2219 Wrong number of arguments in call of macro 'mxSetName'
  [C++ Error] Unit1.cpp(36): E2219 Wrong number of arguments in call of macro 'engPutArray'
  [C++ Error] Unit1.cpp(41): E2219 Wrong number of arguments in call of macro 'engGetArray'
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-6-6 19:32 , Processed in 0.060017 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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