使用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"
阅读(1719) | 评论(0) | 转发(0) |