最近在摸索C#和matlab混合编程的一些问题,遇到一个问题:
在C#工程内添加了com应用matlab application type libary后,并参照help写了下面一个简单的例子。
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
MLApp.MLAppClass matlab = new MLApp.MLAppClass(); //正确
matlab.Execute("figure(10),plot(1:10)"); //开始出错
matlab.Visible = 0;
}
}
}
MLAppClass 的出错主要由于CLSID {A052DEB6-24BF-4425-B4AE-E8C55D264566}未能完全注册引起的。
相信很多人都碰到,花了九牛二虎之力,终于在国外的网上找到一个有效的解决方案:
1.新建一个reg文件(如fix.reg);
2.用文本打开,拷贝如下内容:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE/SOFTWARE/Classes/Interface/{669CEC93-6E22-11CF-A4D6-00A024583C19}]
@="DIMLApp"
[HKEY_LOCAL_MACHINE/SOFTWARE/Classes/Interface/{669CEC93-6E22-11CF-A4D6-00A024583C19}/NumMethods]
@="21"
[HKEY_LOCAL_MACHINE/SOFTWARE/Classes/Interface/{669CEC93-6E22-11CF-A4D6-00A024583C19}/ProxyStubClsid32]
@="{00020420-0000-0000-C000-000000000046}"
[HKEY_LOCAL_MACHINE/SOFTWARE/Classes/Interface/{669CEC93-6E22-11CF-A4D6-00A024583C19}/TypeLib]
@="{C36E46AB-6A81-457B-9F91-A7719A06287F}"
"Version"="1.0"
3.保存后双击文件,并同意将注册信息写入注册表。
4.重新编译C#项目,可成功通过并执行。
希望对大家有帮助!
在C#中使用MATLAB Application Type Library时遇到错误,原因是CLSID未能完全注册。解决方案包括创建并导入注册表文件,修复MATLAB的COM接口注册。按照步骤操作后,C#项目可以成功执行MATLAB代码。
2084

被折叠的 条评论
为什么被折叠?



