【问题标题】:Matlab failed to load a .NET assemblyMatlab 无法加载 .NET 程序集
【发布时间】:2011-10-14 03:16:03
【问题描述】:

当我尝试通过键入以下内容在 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 构建程序集,但没有成功。

编辑

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

我想以前,当我尝试为 .NET 3.0 添加私有程序集时,由于某些冲突,Matlab 仍在尝试添加安装在 GAC 中的 .NET 4.0 程序集。 但是,我仍然不明白为什么我不能使用 .NET 4.0。

【问题讨论】:

    标签: .net matlab assemblies


    【解决方案1】:

    我无法重现该错误。这是我使用的示例:

    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...

    【讨论】:

    • 感谢您的尝试。与此同时,我发现了一些新东西,并编辑了我的问题。
    • 是的,很多时候,还有操作系统。我也尝试过像你这样的新项目,但我不工作。我还在另一台具有相同 Matlab R2010a 版本的机器上进行了尝试。我认为这是由于 Matlab 版本。你有哪一个?
    • @Ganswer:WinXP + VS2010 上的 R2010b
    猜你喜欢
    • 2012-01-10
    • 1970-01-01
    • 1970-01-01
    • 2021-09-20
    • 1970-01-01
    • 2015-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多