数模论坛

 找回密码
 注-册-帐-号
搜索
热搜: 活动 交友 discuz
查看: 12001|回复: 8

Matlab调用C/C++的一些问题总结

  [复制链接]
发表于 2003-7-26 08:06:22 | 显示全部楼层 |阅读模式
偶整理了一些有关于Matlab调用C/C++的资料,如果再有问题的请到这里查阅:

1、matlab c++ mathlib库在vc6下编译问题

发信人: hujin962 (星期爸), 信区: MathTools
标  题: Re: matlab c++ mathlib库在vc6下编译问题
发信站: BBS 水木清华站 (Mon Oct 14 08:35:28 2002), 站内信件

操作系统:win2000 prefessional
compiler: Microsoft VC 6.0
数学函数库:MatlabR12中 MATLAB C++ Math Library Version 2.1
1. Start up the Microsoft Visual C/C++ 6.0 IDE
2. Go to FILE and NEW. Click on Projects Tab.
   Select Win32 Console Application.
   In the Project Name field type: ex1.
   "Create new workspace" should be filled in.
   In the Platforms field, "Win32" should also be checked.
   Click OK.
3. Highlight ex1 files and then right click.
Select Settings. Click on the C/C++ Tab.
   In the Category listbox select "Code Generation".
   In the "Use Runtime library" listbox select
   "Multithreaded DLL".
Change the Category listbox to &quotreprocessor".
   添加_WINDOWS, _AFXDLL,IBMPC, MSVC, MSWIND, __STDC__
   变为:
   WIN32,_DEBUG,_CONSOLE,_MBCS,_WINDOWS,_AFXDLL,
   IBMPC,MSVC,MSWIND,__STDC__
Tools->Options->Directories
   Include files添加:
   c:\matlabr12\extern\include
   c:\matlabr12\extern\include\cpp
   Library files添加:
   C:\MATLABR12\extern\lib\win32\microsoft\msvc60
   C:\MATLABR12\extern\lib\win32
NOTE: 这些路径设置最好还是根据自己的PC环境检查一下,很简单
Click on the "Link" Tab. In the Category listbox select "Input".
   For C applications, the Object/Library modules
   本来是:
   kernel32.lib user32.lib gdi32.lib winspool.lib
   comdlg32.lib advapi32.lib shell32.lib ole32.lib
   oleaut32.lib uuid.lib odbc32.lib odbccp32.lib
   kernel32.lib user32.lib gdi32.lib winspool.lib
   comdlg32.lib advapi32.lib shell32.lib ole32.lib
   oleaut32.lib uuid.lib odbc32.lib odbccp32.lib
   在左侧添加:
   libmmfile.lib libmatlb.lib libmx.lib libmat.lib sgl.lib
   libmwsglm.lib
NOTE: 这些lib都不用自己生成,
      它在C:\MATLABR12\extern\lib\win32\microsoft\msvc60目录
       和C:\matlabr12\extern\lib\win目录下
NOTE: libmcc.lib对于matlabR12和更高的版本就不需要了,
      同样mcc.h也是matlab5.3留下的,不再需要在工程中包含
NOTE: If you are creating C++ executables you will need to
      add libmatpm.lib在最左边
      它在C:\MATLABR12\extern\lib\win32目录下
   Click OK.
4. Go to Build and Rebuild All.
5. Go to Build and Execute ex1.exe.
 楼主| 发表于 2003-7-26 08:15:23 | 显示全部楼层

2、Matlab C/C++函数库(from CSDN)
<A TARGET=_blank HREF="http://www.csdn.net/develop/article/14/14075.shtm">http://www.csdn.net/develop/article/14/14075.shtm</A>
3、MATLAB 与 C 的接口(from matlab-world)
<A TARGET=_blank HREF="http://www.matlab-world.com/matlab_and_c.htm">http://www.matlab-world.com/matlab_and_c.htm</A>
4、MATLAB混合编程解决方案(from FangQ&#39;s MathWorld)
<A TARGET=_blank HREF="http://engineering.dartmouth.edu/">http://engineering.dartmouth.edu/</A>~fangq/MATH/mindex.htm
 楼主| 发表于 2003-7-26 08:20:04 | 显示全部楼层

5、Matlab 在VC中编译的问题
发信人: Zosco (我在,我思,我思,我在), 信区: MathTools
标  题: Re: Matlab 在VC中编译的问题
发信站: BBS 水木清华站 (Sun Apr 20 00:42:34 2003), 转信


    第一,Matlab的Addin可以打包,就是Addin条上最后一个东东,
但是我发现它打包时老是报错,说什么磁盘空间不够。事实上,我
那个盘有10多G的空间。不知道什么毛病!
    其实不用那个也可以的,直接将那个mglinstaller.exe,和生成
的bin目录下的两个.fig 文件和你的源码一起发布就可以了,我试过
mglinstaller.exe是个自解压文件,里面就是脱离Matlab运行时所需要
的库,解压后要在系统路径中加上解压文件所在的目录。
    第二,我发现这样一个问题(不知道是不是我没做好),一个已经
做好的Matlab程序,直接编译成.exe文件,可以运行,结果也是对的
当然也产生了源代码。但如果不编译成.exe文件,而只采用其生成的
cpp,h文件,在另外一个工程中调用它们,有点问题。设置一些编译
选项,编译是可以通过的,但运行时报错,说Access violation。调试
一下发现时libmatlab.dll中。哦,对了,我用到了imread,imwrite等
图像库里面的函数,可能是这个原因吧。
    我换另外一个不调用sgl也就是图像库函数的例子,是一个非常复杂
的数值处理,(呵呵,为了测试,我故意搞了一大堆函数),是可以的

   所以,是不是可以得出结论,直接用调用sgl函数的Matlab文件产生
的h,cpp文件是不是目前还不完善?? 我不知道,有没有大侠告知!
   如果真的是这样的话,就不爽了。
   我个人认为,在VC中调用Matlab的最高境界就是在自己的工程
种调用由Matlab函数转换过来的h,cpp文件,或者库函数。如果仅仅是
将m文件编程h,cpp的,只是提高了运算速度,其它的并没有多大意义,
因为生成的那些h,cpp代码什么的,太繁杂了,而且根本就不要报希望
修改它们(修改肯定有这样或者那样的错误,我试过的!)
   如果matlab的sgl不能用,那matlab强大的绘图功能,图像处理等
岂不是没有办法利用了。

    (我觉得不应该是那样,可能我自己搞错了吧! :( 有知道介绍
一下经验吧,我指的是调用imread,fread之类的函数!)
    第三,其实Matlab的Complier,extern API部分的帮助非常好,
我这几天一直在研究,收获颇丰,建议大家看看。

6、VC与Matlab混合编程的快速实现
发信人: ljw (小不懂), 信区: MathTools
标  题: [原创]VC与Matlab混合编程的快速实现(1)
发信站: BBS 水木清华站 (Mon May 19 21:28:21 2003), 转信

1       Matlab编译环境的设置
为了能够使用Matlab的Complier将*.m函数文件编译为动态链接库DLL,必须对Matlab的环
境做出相应的配置。具体做法如下:
在Matlab的Command Window下输入命令mbuild -setup,并根据Matlab的提示选择合适的编
译器,笔者使用的是Microsoft Visual C++.过程如下
&gt;&gt; mbuild -setup
Please choose your compiler for building standalone MATLAB applications:
                                                                                                                        
Would you like mbuild to locate installed compilers [y]/n?                                                              
                                                                                                                        
Select a compiler:                                                                                                      
[1] Lcc C version 2.4 in D:\MATLAB6P5\sys\lcc                                                                           
[2] Microsoft Visual C/C++ version 7.0 in C:\Program Files\Microsoft Visual St                                          
udio .NET                                                                                                               
[3] Microsoft Visual C/C++ version 6.0 in D:\Microsoft Visual Studio                                                   
                                                                                                                        
[0] None                                                                                                               
                                                                                                                        
Compiler: 3                                                                                                            

Please verify your choices:

Compiler: Microsoft Visual C/C++ 6.0
Location: D:\Microsoft Visual Studio

Are these correct?([y]/n):
然后,在Command Window中输入命令cd(prefdir);mccsavepath;这是为了后面使用Matlab在
VC++ IDE中的Add-in作准备。然后输入命令mex -setup,以类似的方法配置编译器。至此
,Matlab的配置完成。如有疑问,可以参阅Matlab的帮助Matlab Compiler\Getting Star
ted\Installation and configuration一节。
发表于 2003-7-26 22:34:49 | 显示全部楼层

大有收获/!
谢谢
发表于 2003-7-31 04:21:56 | 显示全部楼层

收获不小,谢谢。
发表于 2003-8-1 19:24:54 | 显示全部楼层
好文章
发表于 2003-8-2 22:31:30 | 显示全部楼层
大有收获!
发表于 2003-8-3 03:36:21 | 显示全部楼层
这个文章好,大有收获,感谢楼上。
matlab的速度很是个问题,有了这个,不愁了
发表于 2003-8-3 03:43:51 | 显示全部楼层
我现在在stdio.net 2003环境下,不知道有没有很大的变化
您需要登录后才可以回帖 登录 | 注-册-帐-号

本版积分规则

小黑屋|手机版|Archiver|数学建模网 ( 湘ICP备11011602号 )

GMT+8, 2024-3-29 17:35 , Processed in 0.057256 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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