找回密码
 注册
Simdroid-非首页
查看: 87|回复: 4

请教调用Matlab编译生成的dll问题

[复制链接]
发表于 2010-5-20 14:34:16 | 显示全部楼层 |阅读模式 来自 上海
m函数如下

  1. function [fvalue,fvector]=fiedler(ik,jk,sk,im,jm,sm,n)
  2. spK=sparse(ik,jk,sk,n,n);
  3. spM=sparse(im,jm,sm,n,n);
  4. [v,d]=eigs(spK,spM,2,'sm');
  5. fvalue=d(1,1);
  6. fvector=v(:,1);
  7. end
复制代码

编译生成dll

  1. mcc -W cpplib:fiedler -T link:lib fiedler
复制代码

在fiedler.h中生成的函数为

  1. extern LIB_fiedler_CPP_API void MW_CALL_CONV fiedler(int nargout
  2.                                                      , mwArray& varargout
  3.                                                      , const mwArray& varargin);
复制代码

为什么只有一个输出参数和一个输入参数?
 楼主| 发表于 2010-5-20 14:36:35 | 显示全部楼层 来自 上海
Simdroid开发平台
对了,Matlab版本是R2008b
回复 不支持

使用道具 举报

 楼主| 发表于 2010-5-20 22:00:23 | 显示全部楼层 来自 上海
这个怎么传递参数啊?我是初次接触混合编程,还请各位多多指教
回复 不支持

使用道具 举报

发表于 2010-5-20 22:28:19 | 显示全部楼层 来自 新加坡
请问在fiedler.h中还有别的函数声明吗?

如果刚开始的话,不妨看看文档,比如matlab自带的文档,或者找本参考书翻翻。你会发现,这些时间不会白白浪费的。

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2010-5-21 08:58:20 | 显示全部楼层 来自 上海
谢谢taohe的提醒,今天早上发现编译的时候把m文件的扩展名带上就能生成正确的结果了

  1. mcc -W cpplib:fiedler -T link:lib fiedler
复制代码

改为

  1. mcc -W cpplib:fiedler -T link:lib fiedler.m
复制代码

评分

1

查看全部评分

回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-6 23:20 , Processed in 0.044538 second(s), 18 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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