matlab.hpp,使用vs2008调用matlab6.5头文件matlab.hpp进行混编

使用vs2008调用matlab6.5头文件matlab.hpp进行混编

之前在电脑中 "\Matlab_C\matlab6.5混编vc6调用cpp总结XI",已经分析了怎样在vc6的环境下调用matlab.hpp来执行matlab一些基本函数。

对于更高版本的vc来说,使用mcc或是其他的方式,与vs2008能够配合的只有matlab2008以上版本。matlab2008可谓是龟速中的极品,加之自己倒也用不着特别复杂的m文件,所以还是想在matlab.hpp上多费脑经。

C++程序中调用matlab c/c++ math & graphic library的函数。

先举个例子:

#include #include

void main()

{

const char *p = "lib"; int argc = 1;

mlfHGInitialize( &argc, &p );

double data[] = { 1, 2, 3, 4, 5, 6 };

mwArray mat0(6, 1, data);

mwArray mat1(6, 1, data);

plot(mat0,mat1);

mlfHGWaitForFiguresToDie();

mlfHGTerminate();

}

这样就行了,只要编译器的设置适当,编译通过,运行后就会出现与matlab中使用p

lot一样的效果。程序中, mlfHGInitialize( &argc, &p );mlfHGWaitForFiguresToDie(); mlfHGTerminate();三个函数是使用图形库必不可少的。若只使用数学库,则均可不要

。这里的plot函数是在libsgl.hpp中声明的,大家可以查看一下,其中还有许多图形函数,如figure等等。这样,这些函数都可以直接调用了。关于mwArray类的用法,参见《MATLAB? C++ Math library》

现在说明一下编译器的设置。按照以前调用mcc生成的dll是编译器的设置,此程序在vc6.0下可以通过,在vc9.0下编译报错。但是,如果在程序中使用了cout等输入输出库,二者均出现连接错误。

解决方案如下:对vc9.0

需要在C:\Program Files\Microsoft Visual Studio 9.0\VC\include中加上几个重要的matlab.hpp有关的vc6头文件和lib(从vc6.0的vc98下include和lib中需要的文件拷贝出来的),包括:

ISTREAM.H

IOSTREAM.H

IOS.H

IO.H

STRING.H

STRSTREA.H

OSTREAM.H

IOMANIP.H

USEOLDIO.H

STREAMB.H

库文件:

MSVCIRT.lib

MSVCIRTD.lib

头文件的处理上来说,在vs2008的include文件夹下加上了一个vc6的文件夹"vc6",其中包括了这些头文件的声明也有相应的改动,比如#include "vc6/ios.h"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值