ft3303692 发表于 2010-10-11 19:19:15

VC与多个版本的matlab同时混编问题

来到论坛学习了不少混编的知识,在实际应用中效果也不错。可是,最近又遇到了一些问题,希望能和大家讨论一下。

一直以来跟随shunfly的步伐,坚持在vc中调用matlab65的数学库以及绘图库这种方式进行混编,大部分的问题可以很好的解决掉,运算绘图都没有问题。

近来,在工作中遇到了一些信号处理的问题,开始使用matlab的工具箱,感到豁然开朗,工具箱实在是太好用了,里边的函数简单又好用。可惜的是这些函数无法直接在vc中调用,于是就开始从另一个方面着手进行,用COM-BUILDER来做。

开始进行的还是比较顺利的,我先从加减乘除这类简单函数做起,试验了vc调用matlab编译的com这一可能性,很快就实现了。但是当我继续往下进行时,发现了问题,在我的任务中需要用到wden这个函数,用com-builder可以编译,但是调用的时候会出现问题,起初是提示Variables are not supported by EVAL in compiled code,在网上搜索了后按照哈工大的 fork 给出的解决方案进行了处理,并没有得到想要的结果,而是出现了另一个错误提示'which' is not implemented in standalone mode‘,至此工作陷入了僵局。这里又要提到shunfly了,它实际上对这个函数进行过重新打包,在本论坛就可以搜到这个帖子http://forum.simwe.com/viewthread.php?tid=759880,但是通过我仔细对比后发现他所给出的denoise.dll的运算结果和wden的结果还是有一定的偏差,不过也基本可以用。虽然已经有了较好的结果,但是我还是想再进一步。后来通过查找资料,发现原来是matlab65中的编译器不够强大,无法很好的编译工具箱的函数,所以我将matlab升级,从7.0以后的版本combuilder对工具箱的支持都是比较好的,我编译了wden,实现了在VC中的调用。

正在我高兴的时候问题又来了,因为一直以来我的程序在绘图这部分都是利用shunfly的vc绘图类http://forum.simwe.com/viewthread.php?tid=779324&highlight=%2Bshunfly,当我把matlab7.0编译的com和vc绘图类放在一个工程里的时候com接口不能被建立,在以下这段代码处出问题了。
if(!wden.CreateDispatch("my7wden.my7wdenclass.1_0",NULL))
   AfxMessageBox("创立接口失败");//创立接口

CreateDispatch失败。由于我对com不是很理解所以卡在这里了。。。也不知道是什么原因,所以只好在此求助大家了。

ft3303692 发表于 2010-10-14 17:25:07

哎,每人回

pasuka 发表于 2010-10-14 21:01:47

建议直接升级到matlab2010b和vs2008
matlab7.0和7.1的问题还是太多,新版很多问题都克服了

ft3303692 发表于 2010-10-14 21:07:29

感谢楼上你的回复,不过我的问题在于我已经用习惯了6.5的绘图功能了,可以直接嵌入vc的程序里边,用起来很爽。但是却不能与其他版本生成的com同时在一个工程里用

shunfly 发表于 2010-10-15 12:42:04

denoise.dll是我以前需要用到小波滤波函数花了一晚上自己处理出来的成果。
'which' is not implemented in standalone mode‘,
这些东西,是因为MATLAB65源代码里用了大量的WHICH语句,我把有些注释掉了,有些自己改写了
还有很多诸于此类的问题。

shunfly 发表于 2010-10-15 12:45:32

另外VC绘图类适合如下情况:
       你的VC需要利用MATLAB的部分计算
       该部分计算不需要太负责,不涉及MATLAB6.X无法编译的情况
我后来自己也没有用MATLAB的VC绘图类,转而自己写了VC的单纯绘图类,和MATLAB的曲线绘图功能一致。将重点放在算法上。
所以,利用新版本,虽然打包体积大点,但省去了不少苦布置,是你应该考虑的

yejihai669 发表于 2010-10-26 21:48:30

应该跟随时代的步伐,使用新版本,可是我们新手在新版本的混编上参考资料变得更少了~~

ft3303692 发表于 2010-11-23 22:18:36

另外VC绘图类适合如下情况:
       你的VC需要利用MATLAB的部分计算
       该部分计算不需要太负责,不涉及MATLAB6.X无法编译的情况
我后来自己也没有用MATLAB的VC绘图类,转而自己写了VC的单纯绘图类,和MATLA ...
shunfly 发表于 2010-10-15 12:45 http://forum.simwe.com/images/common/back.gif这倒是个很好的办法,不过重写个绘图类感觉工程量很大啊。。。
页: [1]
查看完整版本: VC与多个版本的matlab同时混编问题