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

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

[复制链接]
发表于 2009-12-2 20:56:30 | 显示全部楼层 来自 辽宁沈阳
为什么我的matlab编译后ctf文件一闪而过,就没了;
但是不影响程序执行,这是为什么?
回复 不支持

使用道具 举报

发表于 2009-12-20 15:44:44 | 显示全部楼层 来自 广东湛江
Simdroid开发平台
本帖最后由 messenger 于 2009-12-20 15:55 编辑

为什么我按照以上做出错呢,

vs2005出现

本帖子中包含更多资源

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

×
回复 不支持

使用道具 举报

发表于 2009-12-20 15:54:28 | 显示全部楼层 来自 浙江杭州
这种错误提示,应该是编译没有成功,没有生成可执行文件,注意一下编译错误信息。

vs2005出现
linhengcan126 发表于 2009-12-20 15:44
回复 不支持

使用道具 举报

发表于 2009-12-20 16:59:12 | 显示全部楼层 来自 广东湛江
thanks,messenger ,你是如何做到截图放在上面的,我不会弄啊
回复 不支持

使用道具 举报

发表于 2009-12-20 17:00:23 | 显示全部楼层 来自 广东湛江
这里说的的libmyadd2.lib mclmcrrt.lib 中mclmcrrt.lib 是放在哪个文件夹中,我找不到啊
回复 不支持

使用道具 举报

发表于 2009-12-20 22:23:17 | 显示全部楼层 来自 浙江杭州
lz 那些兰颜色的字不是说得很清楚了吗?还找不到,就在Matlab工作目录之类的目录中找一找。

这里说的的libmyadd2.lib mclmcrrt.lib 中mclmcrrt.lib 是放在哪个文件夹中,我找不到啊
linhengcan126 发表于 2009-12-20 17:00
回复 不支持

使用道具 举报

发表于 2009-12-20 22:55:04 | 显示全部楼层 来自 广东湛江
自问自答:
把mcc命令产生的 .dll and .ctf 文件拷到C:\ProgramFiles\Microsoft Visual Studio 8\Common7\IDE

还要把C:\ProgramFiles\Microsoft Visual Studio 8\Common7\IDE; 加到environment variable 的path ...
axius 发表于 2008-8-5 17:23


这里说的加到environment variable 的path ...是如何加的呢??谢谢
回复 不支持

使用道具 举报

发表于 2009-12-20 23:48:08 | 显示全部楼层 来自 浙江杭州
把图片存成.jpg或.png格式的,就可以直接显示,bmp格式的图片不能直接显示。

thanks,messenger ,你是如何做到截图放在上面的,我不会弄啊
linhengcan126 发表于 2009-12-20 16:59
回复 不支持

使用道具 举报

发表于 2009-12-20 23:49:30 | 显示全部楼层 来自 浙江杭州
就是操作系统的环境变量,可以通过我的电脑->属性->高级,来设置系统的环境变量。

另外,感觉还你的程序或者设置有问题,否则不用设置环境变量。

这里说的加到environment variable 的path ...是如何加的呢??谢谢

linhengcan126 发表于 2009-12-20 22:55
回复 不支持

使用道具 举报

发表于 2010-4-14 17:15:57 | 显示全部楼层 来自 陕西西安
谁有这方面的详细资料
回复 不支持

使用道具 举报

发表于 2010-4-14 17:21:25 | 显示全部楼层 来自 浙江杭州
参考TAOHE的<深入浅出MATLAB7.X混合编程>一书,搜索一下TAOHE与shunfly以前发的贴子也能有帮助

谁有这方面的详细资料
shmilywcy 发表于 2010-4-14 17:15
回复 不支持

使用道具 举报

发表于 2010-5-19 19:25:05 | 显示全部楼层 来自 黑龙江哈尔滨
有没有试过编译包含符号变量的dll文件,VC或VB之类的程序能调用么?
回复 不支持

使用道具 举报

 楼主| 发表于 2010-5-19 20:29:51 | 显示全部楼层 来自 新加坡
有没有试过编译包含符号变量的dll文件,VC或VB之类的程序能调用么?
pengwengen 发表于 2010-5-19 19:25


不能调用符号运算功能。
回复 不支持

使用道具 举报

发表于 2010-5-27 22:29:41 | 显示全部楼层 来自 新疆乌鲁木齐
这一页帖子看完还真是打开眼界!素质教育硕果累累啊!
这里说的加到environment variable 的path ...是如何加的呢??谢谢
这里说的的libmyadd2.lib mclmcrrt.lib 中mclmcrrt.lib 是放在哪个文件夹中,我找不到啊

无语...
拜托,你这样的也有脸“混”进“编”程的队伍,哪怕仅仅只是非正式的?
为什么我的matlab编译后ctf文件一闪而过,就没了;

控制台程序你以为应该怎么调用,dos窗口都不打开,如何看结果!
有没有试过编译包含符号变量的dll文件,VC或VB之类的程序能调用么?

同样的问题simwe里我见过三十次不同人在不同时间不同主题中回复过,帮助文件中一上来就申明过,一样都不看不搜索,上来就瞎问,搞哪门子混编?
真是浪费了taohe一片苦心!
回复 不支持

使用道具 举报

发表于 2010-7-6 10:44:17 | 显示全部楼层 来自 江苏南京
这个东西非常有用,我最近也在研究这个东西,只是我想问句,这个例子中传给dll的变量是矩阵,创建变量时用的是mwArray a(2, 2,  mxDOUBLE_CLASS);,如果想传给dll文件的变量类型是字符串或者其它类型时该怎么创建变量呢?
回复 不支持

使用道具 举报

发表于 2010-7-26 22:01:44 | 显示全部楼层 来自 湖北武汉
本帖最后由 fighter-11 于 2010-7-26 22:05 编辑

实验环境:Windows 2003 Std Server with SP2 (En),MATLAB R2007b,Visual Studio 2005。MATLAB安装路径:h:\MATLABR2007b。

请问:Windows 2003 Std Server with SP2 (En),是不是必须的?Visual Studio 2005是哪个版本?

因为我现在也正在搞这个东西。
Windows XP sp3 chs
matlab 2007a
matlab老认不出来MSVC8 team edition
在mathworks里面混了很长时间,也没有找到正确的解决方案,叫人很抓狂。
有人说要安装windows server 2003 platform sdk,结果我安装了,只是能够辨识出来Visual Studio 2003.net,而我根本就没有装!崩溃了。
还望兄台赐教。
回复 不支持

使用道具 举报

 楼主| 发表于 2010-7-27 11:26:36 | 显示全部楼层 来自 新加坡
实验环境:Windows 2003 Std Server with SP2 (En),MATLAB R2007b,Visual Studio 2005。MATLAB安装路径:h:\MATLABR2007b。

请问:Windows 2003 Std Server with SP2 (En),是不是必须的?Visual Studio 20 ...
fighter-11 发表于 2010-7-26 22:01


我给出的实验环境仅供参考,不是必须的。只要matlab7.0之后的应该都可以用相同的方法琢磨。

至于你的问题,可能是因为中文Windows操作系统的原因。论坛上已经有朋友发过解决方案了(好像是junziyang的帖子)你找找看,如果找不到,可以试试看在设置编译器的时侯用手工输入编译器所在目录。
回复 不支持

使用道具 举报

发表于 2010-10-21 19:29:40 | 显示全部楼层 来自 湖北武汉
139# taohe
已经试验过了,虽然辨识不出来,但是强行进行配置,可以生成matlab可以调用的dll。
但是用matlab生成windows下的dll就不行了,报错。
再次表示感谢。

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2010-12-7 22:24:11 | 显示全部楼层 来自 北京
补充一下:如果使用MATLAB2008之后的版本(注:该信息源自roc的精华帖:程序中使用MATLAB编译产生的DLL (VC6.0, MATLAB R2010b, mwArray)),我使用的是MATLAB2010b,则上述taohe兄给出的步骤有两个地方需要小调整:
1.增加include路径时,看看mclmcr.h在哪个路径下,应该是不能要后面那个“win32”;
2.vs下的代码去掉两个#include,最前面几行改成:
  1. #include "stdafx.h"

  2. #include <iostream>
  3. #include "libmyadd2.h"


  4. int _tmain(int argc, _TCHAR* argv[])
  5. {

  6.         std::cout << "Hello world!" << std::endl;
  7. ...
复制代码
也就是去掉mclmcr.h和mclcppclass.h这两个include,如此编译即可正常。
回复 不支持

使用道具 举报

发表于 2010-12-8 01:28:49 | 显示全部楼层 来自 北京
建议将
#include "mclmcr.h"
#include "mclcppclass.h"
改为
#include
#include
dav1125 发表于 2007-12-18 17:27

在C primer中看到:不是标准库里的类,习惯上使用双引号,感觉taohe这样做没什么不好。
回复 不支持

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 22:47 , Processed in 0.049251 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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