matlab混合编程论坛,求助!Matlab混合编程!

我就是想把Matlab7.5中的m函数转换成VC++6.0动态链接库,以便于VC调用!我按照网上的方法,使用mex -setuo和mbuild -setup设置了MATLAB编译器,然后用MCC命令 mcc -W cpplib:libsum_prod -T link:lib sum_prod将sum_prod.m 函数传换成dll等一些文件,在VC中新建WIN32控制台应用程序,配置VC的环境,在TOOlS->Options… 菜单项,选择 Directories 标签,在 include files 里面加入C:\PROGRAMFILES\MATLAB\R2007B\EXTERN\INCLUDE,在 Library files 里面加入C:\PROGRAM FILES\MATLAB\R2007B\EXTERN\LIB\WIN32\MICROSOFT\MSDEV,这里我觉得是不是‘MSDEV’有问题,这是我从VC的快捷方式中找到的名称,是不是需要用网上写的MSVC60?

然后将dll,;ib,h,ctf文件放在VC的目录下,添加h文件,然后加入这段代码

#include "iostream.h" // 输入输出头文件

#include "mclmcr.h" // mwArray 类型声明

#include "libsum_prod.h" // DLL 头文件

void display(const double* data, const int r, const int c, const char* name);

int main()

{

// 初始化程序

if( ! mclInitializeApplication(NULL,0) )

{

fprintf(stderr, "Could not initialize the application.\n");

exit(1);

}

// 初始化库

if (! libsum_prodInitialize() )

{

fprintf(stderr,"Could not initialize the library.\n");

exit(1);

}

// 声明 DLL 函数输入输出 mwArray 对象

mwArray X(2,3,mxDOUBLE_CLASS);

mwArray Y(2,3,mxDOUBLE_CLASS);

mwArray SUM,PROD;

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

double y[] = {7,8,9,10,11,12};

double *sum,*prod;

sum = new double[6];

prod = new double[6];

// 给输入 mwArray 对象赋值

X.SetData(x,6);

Y.SetData(y,6);

// 调用 DLL 函数

sum_prod(2,SUM,PROD,X,Y) ;

// 取出输出数据

SUM.GetData(sum,6);

PROD.GetData(prod,6);

// 显示 mwArray 对象

// std::cout << "SUM = " << std::endl << SUM << std::endl;;

// std::cout << "PROD = " << std::endl << PROD << std::endl;;

display(sum,2,3,"SUM");

display(prod,2,3,"PROD");

delete sum;

delete prod;

// 关闭库和程序

libsum_prodTerminate() ;

mclTerminateApplication() ;

return 0;

}

// 显示矩阵函数

void display(const double* data, const int r, const int c, const char* name)

{

int i,j;

printf("%s = \n",name);

for(i=0;i

{

printf("\t");

for(j=0;j

printf("% 4.2f \t",data[j*r+i]);

printf("\n");

}

printf("\n");

}

然后执行,就出现Compiling...

trymatlab.cpp

Linking...

LINK : fatal error LNK1104: cannot open file "mclmcrrt.lib"

Error executing link.exe.

的错误!

请高人给指明一下,是什么原因呢?

m程序内容如下:

function [sum,prod] = sum_prod(p1,p2)

sum = p1+p2; % p1 与 p2 的和

prod = p1.*p2; % p1 与 p2 的点乘

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值