找回密码
 注册
Simdroid-非首页
楼主: taohe

【原创】程序中使用MATLAB编译产生的DLL (VS2005, MATLAB7.5, mwArray)

[复制链接]
发表于 2009-9-1 17:55:33 | 显示全部楼层 来自 江苏南京
设置和结果:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

发表于 2009-9-1 18:02:05 | 显示全部楼层 来自 江苏南京
Simdroid开发平台
VC程序太多,附件传不上来,传个.cpp文件。就是最简单的控制台程序:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

 楼主| 发表于 2009-9-1 18:29:50 | 显示全部楼层 来自 新加坡
那个设置和结果的Word文档打开后看不见内容。请查看一下。
回复 不支持

使用道具 举报

发表于 2009-9-1 19:40:41 | 显示全部楼层 来自 江苏南京
那个设置和结果的Word文档打开后看不见内容。请查看一下。
taohe 发表于 2009-9-1 18:29

可能是单位和家里的word版本不同,如果还不行明天我压缩好再拷来。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

发表于 2009-9-1 20:01:03 | 显示全部楼层 来自 江苏南京
那个设置和结果的Word文档打开后看不见内容。请查看一下。
taohe 发表于 2009-9-1 18:29

我的邮箱:momlovekaikai@yahoo.cn
我可以通过邮箱发给你,谢谢!
回复 不支持

使用道具 举报

 楼主| 发表于 2009-9-1 20:29:49 | 显示全部楼层 来自 新加坡
真是有点匪夷所思,我重新下载你的附件,那个“设置和结果”的Word文档打开说有131页,但都是空白的。我用的是Word2007/Windows7。

我的邮箱:taohe@hotmail.com
回复 不支持

使用道具 举报

发表于 2009-9-3 17:30:44 | 显示全部楼层 来自 江苏南京
真是有点匪夷所思,我重新下载你的附件,那个“设置和结果”的Word文档打开说有131页,但都是空白的。我用的是Word2007/Windows7。

我的邮箱:taohe@hotmail.com
taohe 发表于 2009-9-1 20:29

taohe老师:
昨天已经把程序代码和文档发到你的邮箱里了,不知收到没?想知道这些内存问题对程序影响有多大,能不能忽略?虽然能正常出结果,但心里总是不踏实!希望老师能指点一下!谢谢!
回复 不支持

使用道具 举报

 楼主| 发表于 2009-9-4 10:33:38 | 显示全部楼层 来自 新加坡
我收到了,不过比较忙,还没有回复,就在这里先说一下。

从那写文档中我看不出什么问题。看错误好像是在debug编译后调试运行时出现的错误,你用“release”选项编译后运行的话,有相同的问题吗?

一个可能的原因可能是某些运行库不兼容或者冲突导致的错误信息。试试看这样:
1. 按照编译后程序的发布方法,把这个程序拿到另外一个最好是没有安装matlab的电脑上,安装MCR环境,然后在那里运行,看是不是还是有同样的问题。

2. 还是在本机上,修改C++源程序,在所有调用和matlab有关的地方加上Exception处理,就是用try和catch语句,可以尝试catch CMemoryException,看看它能不能提供更多的信息。
回复 不支持

使用道具 举报

发表于 2009-9-4 19:05:03 | 显示全部楼层 来自 江苏南京
谢谢taohe老师的指导!我试过在“release”下运行,也有同样的问题。你说的两种方法没有试过,上班后我试一下,谢谢taohe老师!
回复 不支持

使用道具 举报

发表于 2009-9-5 22:31:39 | 显示全部楼层 来自 四川德阳
谢谢,先学了了!!
回复 不支持

使用道具 举报

发表于 2009-9-7 20:08:57 | 显示全部楼层 来自 江苏南京
我收到了,不过比较忙,还没有回复,就在这里先说一下。

从那写文档中我看不出什么问题。看错误好像是在debug编译后调试运行时出现的错误,你用“release”选项编译后运行的话,有相同的问题吗?

一个可能的原 ...
taohe 发表于 2009-9-4 10:33

taohe老师:今天试了你说的两种方法,但是都没有结果。
1)将\MATLAB\R2007a\toolbox\compiler\deploy\win32的四个文件全部拷到没有matlab的机器上,设置好环境运行,内存异常问题依然存在。
2)用try 和catch跟踪:使用下面语句
try
{
libmyadd2Initialize();
}
catch( ...)
{
  int a=0;
}
因为使用catch( CMemoryException *e)总编译有问题(好像用的不对,太笨了!),所以使用了catch( ...),应该只要有问题就可以跟踪到,但是没有进入到catch里面,是不是能说明VC没有问题吧!
这个问题太复杂了,快崩溃了。不知道是继续还是放弃。实在不行准备拷机,看看到底有没有影响。
回复 不支持

使用道具 举报

 楼主| 发表于 2009-9-7 20:40:38 | 显示全部楼层 来自 新加坡
这个问题显得有点扑朔迷离了。不过,说实话,由于这个测试程序非常简单,所以我觉得是你的系统、你的VC,或者matlab有问题。也不能排除某个步骤、环节上认为的疏忽。不过我从现有的信息中无法判断问题的根源,所以帮不了你什么忙。

如果因为这样的原因就放弃混编的想法,我觉得不可取,它在某些应用中是很有用的。

如果你要有时间、精力的话,不妨试试在一个虚拟环境中从零开始搭建环境。免费软件VirtualBox用起来很顺手,用它你可以创建一个虚拟的Windows电脑,在那里重新安装matlab,visualstudio等相应的软件,打好补丁。为了更好地避免不相干的问题,尽量使用英文版本的软件。希望这样能够巩固你学习混编的兴趣。也有可能找到现在遇到的问题的根源。
回复 不支持

使用道具 举报

发表于 2009-9-7 21:23:56 | 显示全部楼层 来自 江苏南京
谢谢taohe老师耐心的指导!我不是想放弃混编,只是针对这个内存异常问题而已。其实也不想放弃这个问题,总觉得事情没有彻底完成,心里有遗憾。但是工作又不能停止,等忙过这一阵,我会继续查找问题的原因的。再次感谢taohe老师!你渊博的知识、平和的心态以及对MATLAB的热情,深深感动我!谢谢!
回复 不支持

使用道具 举报

 楼主| 发表于 2009-9-7 21:34:34 | 显示全部楼层 来自 新加坡
谢谢夸奖,你太客气了,我不禁有点汗颜。在这个主题的帖子中都有好几个我无法帮助解决的问题,我觉得有压力,所以还得不停的学习。hehe :)
回复 不支持

使用道具 举报

发表于 2009-9-7 21:47:15 | 显示全部楼层 来自 江苏南京
呵呵,不是客气,是真心话!和你学习了不少东西!以后有问题还会向老师请教的!!!
回复 不支持

使用道具 举报

发表于 2009-9-22 12:42:57 | 显示全部楼层 来自 北京
79# taohe 你好,能否将您的Matlab 2009 与vs6 混编的工程告诉我呢,我应该您所说的方法将.m文件生成了.h,.dll,.lib文件,然后不知如何在vs6中配置环境,现在出现mclInitializeApplication_proxy' : undeclared identifier这样的错误,谢谢了,我的邮箱是liuhe108@gmail.com
回复 不支持

使用道具 举报

 楼主| 发表于 2009-9-23 10:59:26 | 显示全部楼层 来自 新加坡
79# taohe  你好,能否将您的Matlab 2009 与vs6 混编的工程告诉我呢,我应该您所说的方法将.m文件生成了.h,.dll,.lib文件,然后不知如何在vs6中配置环境,现在出现mclInitializeApplication_proxy' : undeclared id ...
her 发表于 2009-9-22 12:42


我暂时没有对应于matlab r2009a/b的例子程序代码。不过你试试看把那个有main函数的cpp文件中的关于mcr的两个include语句注释掉,重新编译。应该就没有问题了。
回复 不支持

使用道具 举报

发表于 2009-10-11 23:58:04 | 显示全部楼层 来自 北京
楼上出现的几个问题我基本上都碰到了,一一解决,现在请教taohe老师另一个问题,我按照说明配置后, 首先的错误是 error C2061: 语法错误 : 标识符“_TCHAR”,因此我将int _tmain(int argc, _TCHAR* argv[])括号中的内容去掉,再编译,这次错误是
fatal error LNK1561: 必须定义入口点
请教taohe老师,这个该怎么该
我用的是vista,matlab2009b
回复 不支持

使用道具 举报

发表于 2009-10-12 00:21:01 | 显示全部楼层 来自 浙江杭州
本帖最后由 messenger 于 2009-10-12 00:22 编辑

118#wsnad


最好把你遇到的那几个问题的解决方法共享一下。本版不只是提问题的地方,更是共享经验,大家共同提高的地方。


楼上出现的几个问题我基本上都碰到了,一一解决,现在请教taohe老师另一个问题,我按照说明配置后, 首先的错误是 error C2061: 语法错误 : 标识符“_TCHAR”,因此我将int _tmain(int argc, _TCHAR* argv[])括号中的 ...
wsnad 发表于 2009-10-11 23:58
回复 不支持

使用道具 举报

发表于 2009-10-12 15:20:14 | 显示全部楼层 来自 陕西西安
我碰到的有:找不到mclInitializeApplication_proxy
将#include "mclmcr.h"后加个rt即可
另一个是没生成ctf,不管即可
我的问题是因为项目没有建对,应该是win32控制台,我建成clr控制台了

现在能正常编译,在文件最后价格getchar()就不会一闪而过

生成exe的文件夹内必须放入dll文件,否则程序无法运行

评分

1

查看全部评分

回复 不支持

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 12:20 , Processed in 0.048177 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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