Matlab和Visual C++的混合编程(4)

时间:2025-02-24

Matlab和Visual C++的混合编程

Matlab运行环境的独立的运用程序,在编译的过程中,如果调用Matlab工具箱中的函数,Matlab会自动联编所需要用到的其它m文件,并生成相应的C或者C++源代码。

此种方法的步骤比较繁琐,对Matlab编译器的命令参数和Visual C++的设置都需要详细的了解,作者将此种方法混合编程的过程介绍如下:

1) 用Matlab编译器编译m文件,根据m文件是否使用了图形相关的函数,命令参数分别如下:

没有使用图形相关函数:mcc–t –L C m文件、或者mcc –t –L CPP m文件分别得到C源代码和C++源代码。

使用了图形相关函数:mcc –B sgl –t –L C m文件、或者mcc –p –B sglcpp m文件分别得到C源代码和C++源代码。

2) Visual C++设置:在Tools/Options/Directories的Include Files中加入: MATLAB路径\EXTERN\INCLUDE\CPP

MATLAB路径\EXTERN\INCLUDE

Library Files中加入:

MATLAB路径\EXTERN\LIB\WIN32

MATLAB路径\EXTERN\LIB\WIN32\MICROSOFT\MSVC60

在Project/Setting/link的Input中,Object/Library modules文本框中加入libmmfile.lib libmatlb.lib libmx.lib libmat.lib libmatpm.lib sgl.lib libmwsglm.lib libmwservices.lib,这些lib是Visual C++运行Matlab编译的C/C++源代码所需要的库,在Ignore Libraries中有时候要加入msvcrt.lib,libcd.lib,这主要是看Matlab的库函数是否与Visual C++提高的函数产生冲突而定,在Win32 Application的Visual C++工程中一般需要在Ignore Libraries中加入msvcrt.lib,libcd.lib以解决警告信息。

在Project/Setting/C/C++中,Preprocessor definitions中加入MSVC,IBMPC,MSWIND;再在下拉框中选择Precomplied Headers,选中Automatic use of precompiled headers,在其中填入stdafx.h。

3) 添加Matlab编译后与m文件对应的.h或.hpp、.c或.cpp和bin目录(用到图形相关函数才有)复制到所建的工程中。

修改源代码,以MFC Appwizard(exe)工程为例:首先要添加相应的头文件,其次在InitInstance函数中加入:

libmmfileInitialize();

libmwsglmInitialize();

mlfHGInitialize(NULL,NULL);

在析构函数中加入:

mlfHGTerminate();

libmmfileTerminate();

libmwsglmTerminate();

然后在适当的位置添加需要Matlab类型代码或者调用的Matlab编译后的功能函数。

4) 编译调试,由于此方法设置比较复杂和灵活性比较大,所以调试必不可少的,要根据不同的错误提示做不同的改动。

2.5 调用外部程序

这种方法是先利用Mideva或者Matlab自身编译器直接生成EXE文件,然后在Visual C++的工程中通过CreateProcess()或Shell调用,常见的外部函数有shellexec()或winexec()。这种方法简单方便,但运行时出现一个控制台窗口,而且由于Visual C++和Matlab之间不能交互,通用性差,仅适用于Visual C++工程中调用Matlab实现图形显示的场合。

三、Visual C++和Matlab混合编程的问题总结

Matlab的运算功能强大、工具箱函数丰富,本设计只是对Matlab和Visual C++的集成作了一些简单的试验,应用于图像处理方面,并作了一些对比;但是目前两个开发工具的集成只能是比较简单、比较浅层的集成,要想进一步集成,Matlab或者Windows的内部调用机制要进一步完善,我们也要更进一步了解它们的内部机制。

Matlab和Visual C++的混合编程(4).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219