sally_mn 发表于 2006-10-13 22:13

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

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

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

[ 本帖最后由 lxq 于 2007-1-28 20:09 编辑 ]

sally_mn 发表于 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。
在进行了这些必要的设置之后,我们就可以选用适当的函数来实现目标。

sally_mn 发表于 2006-10-14 21:20

出现一堆链接错误
多是类似:
【linker Error】Unresolved external '_mlfEnterNewContext'

我想是C++builder 设置有问题,如何改?

chentaixu 发表于 2007-1-28 15:45

回复 #4 sally_mn 的帖子

我也遇到同样的问题啦,怎么解决啊?希望高手来看看啊!

chentaixu 发表于 2007-1-28 15:46

回复 #4 sally_mn 的帖子

我一打开引擎就出现你说的那个错误!

happy 发表于 2007-1-28 16:12

http://forum.vibunion.com/forum/viewthread.php?tid=28272&extra=page%3D1中已经回复

希望不要重复提问

mrjing 发表于 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还存在问题,不得其解)

gaohongxia0707 发表于 2007-2-27 21:39

在bcb中,可以用matcom for bcb 实现类似的调用,更加方便,不过实现的功能有限。

但是,一般的矩阵运算没有问题

mrjing 发表于 2007-3-14 19:49

请问兄台,手头上有matcom for bcb 吗? 我根本找不到呀!

gghit 发表于 2007-4-3 11:18

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

出现如下错误怎么回事呀?谢谢
Unit1.cpp(25): E2449 Size of 'DemoMatlab' is unknown or zero
Unit1.cpp(25): E2141 Declaration syntax error
Unit1.cpp(34): E2219 Wrong number of arguments in call of macro 'mxSetName'
Unit1.cpp(36): E2219 Wrong number of arguments in call of macro 'engPutArray'
Unit1.cpp(41): E2219 Wrong number of arguments in call of macro 'engGetArray'
页: [1]
查看完整版本: c++builder 是否可以调用MATLAB C MATH Library 实现混编