首页 文章

Matlab无法加载.NET程序集

提问于
浏览
2

当我尝试通过输入以下内容加载Matlab我的.NET程序集foo.dll:

asm = NET.addAssembly('fullpath\foo.dll');

我收到以下错误:“无法加载文件或程序集'file:/// fullPath \ foo.dll'或其依赖项之一 . 此程序集由比当前加载的运行时更新的运行时构建,无法加载 . :mscorlib HelpLink:“

我是Matlab R2010a,我试图为.NET framework 4.0和.NET framework 3.0构建程序集但没有成功 .

EDIT

我做了几次测试,现在也许我已经部分发现了这个问题 . 在上面的例子中,我试图通过提供完整路径来添加私有程序集 . 然后我记得以前在GAC中通过 gacutil /i foo.dll 命令注册了相同的程序集(针对.NET 4.0) . 因此,我从GAC( gacutil /u foo )中删除了程序集,现在至少我能够添加针对.NET 3.0的私有程序集,但如果我想要定位.NET 4.0则仍然不能 .

我认为之前,当我尝试为.NET 3.0添加私有程序集时,Matlab仍在尝试添加安装在GAC中的.NET 4.0程序集,因为存在一些冲突 . 但是,我仍然不明白为什么我不能使用.NET 4.0 .

1 回答

  • 3

    我无法重现错误 . 这是我使用的例子:

    MyClass.cs

    using System;
    namespace ClassLibraryTest
    {
        public class MyClass
        {
            public static double add(double x, double y)
            {
                return x + y;
            }
        }
    }
    

    MATLAB

    >> NET.addAssembly('C:\path\to\ClassLibraryTest.dll');
    >> ClassLibraryTest.MyClass.add(1,2)
    ans =
         3
    

    我尝试了不同的.NET目标框架4.0 / 3.5 / 3.0,它们都运行良好 . 请注意,加载后无法卸载程序集,释放.NET资源的唯一方法是重新启动MATLAB ...

相关问题