惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
J
Java Code Geeks
B
Blog
腾讯CDC
博客园 - 三生石上(FineUI控件)
S
SegmentFault 最新的问题
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园 - Franky
罗磊的独立博客
月光博客
月光博客
Jina AI
Jina AI
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
D
Docker
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
G
Google Developers Blog
V
Visual Studio Blog
I
InfoQ
有赞技术团队
有赞技术团队
D
DataBreaches.Net
Microsoft Security Blog
Microsoft Security Blog
WordPress大学
WordPress大学
阮一峰的网络日志
阮一峰的网络日志
宝玉的分享
宝玉的分享
Blog — PlanetScale
Blog — PlanetScale

博客园 - Tutuya

栀子花开,那时花开 SQL Server安装:"安装文件配置服务器失败"的解决方法 "SQL Server不存在或访问被拒绝"问题的解决 海量数据库的查询优化及分页算法方案(二)-实现小数据量和海量数据的通用分页显示存储过程 [转] 如何让SQL运行得更快 海量数据库的查询优化及分页算法方案(二)-改良SQL语句 [转] 海量数据库的查询优化与分页算法方案(一)[转] “在Web 窗体设计器中未能加载该文件”的解决方法 Matlab编译COM组件的解决方案 武夷下梅邹氏家祠(图) 梦境的启示 游泳的小乌龟 SWARM—一个支持人工生命建模的面向对象模拟平台 List of Microsoft patterns and practices for Application Architecture and Design 建立DotNet解决方案时,显示"无法建立与服务器的建立连接"? 简单介绍SWARM,ASCAPE,PPAST,TNG-lab swarm资料链接 复杂适应系统和swarm简介 水晶报表:查询引擎错误
Vs.net 2003调用Matlab7编译的COM组件的问题与讨论
Tutuya · 2006-05-12 · via 博客园 - Tutuya

发布COM组件到目标机器,运行下面的简单程序,用VS.net2003调用Matlab7.0编译的COM组件,实现图片的处理和加法功能:

 

COM的发布:
-----------------------------------------------------

1.如果目标机器没有装MATLAB Component Runtime (MCR) (即目标机器上没有装MATLAB)

把源机器\..\matlab\toolbox\compiler\deploy\win32\MCRInstaller.exe拷贝到目标机器上安装并将该安装的以下路径加入到系统变量PATH 中\..\MATLAB Component Runtime\v70\bin\win32 

注:a.或者可以直接在编译时将MCR添加到COM组件包中,这样导致的COM组件的.exe文件较大,这样运行.exe文件安装
b.一般情况下,安装过程中会自动将路径添加到系统变量PATH中
 

2.将源机器下的\..\matlab\bin\win32\mwcomutil.dll拷贝到 \..\MATLAB Component Runtime\v70\bin\win32下并在此路径下注册该DLL(方法是:在DOS中该路径下输入 regsvr32 mwcomutil.dll或在该此文件夹中创建一个.bat文件,其中的命令是regsvr32 mwcomutil.dll保存后直接点击该.bat文件即可) 

3 以上是在目标机器上第一次发布COM时必须的,以后再发布COM就不用进行前两步在目标机器上创建一个文件夹来放置COM,如 ..\myCOM将源机器上将发布的COM组件文件夹中distrib文件夹下的_mcr文件夹的所有文件及.EXE (代表所要发布的COM组件的名字)copy到\..\myCOM 在该目录下执行.EXE

注:a.此处似乎存在问题,我碰到的实际情况是,如果按这一步所说的操作,则会出现下面问题1所出现的问题(如下)。
      b.如果不进行_mcr文件夹的拷贝,只COPY .exe文件,然后运行.exe文件,我发现第一次运行程序,调用COM组件时,将在当前目录自动生成*_mcr文件(*代表你的COM组件名),则不会出现上面的问题。关于个中原因,希望有大牛提供答案。

至此COM发布成功

运行程序调用COM组件所碰到的问题:

问题1:

原因:COM组件发布到目标机器不成功,.dll注册失败。

问题2:当注册成功COM组件后,当运行程序,第一次调用COM组件实现某个功能(如加法运算)时,也还会碰到如下问题:

第二次调用COM组件实现某个功能(如加法运算)时能成功。什么原因????

注意,这个问题不会在本机(编译COM组件的机器)上出现,因此高度怀疑还是COM组件发布中的问题。

 另我从Mathworks公司的官方网站上了解到Matlab7.0以后的版本(MATLAB 7.2 (2006a) )增加了对.net环境的支持,它专门有一个工具箱叫Matlab Builder for .net,可将Matlab函数文件编译成源代码为C#的COM组件,可非常方便的在.net环境中调用组件,希望它不会出现这些问题。还有一个特点就是它增强了在Matlab与其他开发环境之间的数据交换问题。