c# - 初学者 ILNumerics : install under VS2012

标签 c# visual-studio-2012 ilnumerics

我对 ILNUmerics 非常感兴趣,想试用免费版本,但我遇到了麻烦。

我从一个控制台应用程序开始,并尝试运行“hello ilnumerics”控制台应用程序,但我注意到 VS 无法找到 MKL 库。

我在 Windwos 8 下使用 VS2012(通过 2010 年年中 MacBook Pro 上的 Bootcamp;应该相关);我已经从项目解决方案中安装了 NuGet 包扩展。然后右键单击解决方案资源管理器中的引用,“管理 Nu Get 包”,在线/搜索找到各种版本的 ilnumerics。我选择了“ILNumerics”并安装。我将“ILNumerics”和“ILNumerics.Native”添加到我的项目中。然后我可以在解决方案资源管理器的“引用”下看到 ILNumerics,还可以得到两个新文件夹/bin32/和/bin64/它们都包含两个名为:libiomp5md.dll 和 mkl_custom.dll 的 DLL。我检查了他们的 “复制到输出目录”属性,它们都设置为“如果更新则复制”。

显然没有找到 mkl_custom。我编写了以下代码,摘自快速入门指南:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ILNumerics;

namespace ConsoleApplication3
{

  class Program  : ILMath
{
    static void Main(string[] args)
    {

        ILArray<double> A = array<double>
            (new double[] { 1,1,1,1,1,2,3,4,1,3,6,10,1,4,10,20} ,4, 4);
        ILArray<double> B = counter(4, 2);

        ILArray<double> Result = linsolve(A, B);
        Console.Out.WriteLine("A: " + Environment.NewLine +
                A.ToString());

            Console.Out.WriteLine("B: " + Environment.NewLine + B.ToString());

            Console.ReadKey();
        }
    }
}

我得到了这个异常: ILNumerics.dll 中出现“System.DllNotFoundException”类型的未处理异常

附加信息:无法加载 DLL“mkl_custom”:找不到指定的模块。 (HRESULT 异常:0x8007007E)

如果我不调用 linsolve,ILArray 的 ToString 方法会起作用:如果我评论//ILArray Result = linsolve(A, B);

我在屏幕上打印了两个矩阵。

我也曾尝试计算矩阵的行列式并得到相同的异常:显然任何时候我调用 mkl_custom VS 都无法找到它。

有什么帮助/提示吗?

此外,是否有必要在添加到解决方案的任何项目上通过 NuGet 安装 ILNumerics?是否可以在本地安装一次,然后在需要时添加引用?

最佳答案

两种选择:

1) 确保所有二进制文件都可以按预期访问:ILNumerics 使用 AnyCPU 目标并通过在启动时将“bin32”/“bin64”目录添加到 PATH 环境变量来选择平台依赖子文件夹。可能是您的机器出现故障?您可以通过手动将正确的二进制文件(取决于您的平台)直接放入输出路径来确保。

2) 如果错误仍然存​​在:mkl_custom.dll 依赖于其他一些 dll 本身。一个 (libiomp5md.dll) 随 ILNumerics nuget 包一起提供。其他人应该存在于您的系统上:KERNEL32.DLL 和 MSVCR110.DLL。确保,你有这些!如果内核 dll 丢失 -> 称之为奇迹并重新安装系统。如果缺少 msvcr110 -> 转到 here并安装“Visual C++ Redistributable for Visual Studio 2012”。

如果问题仍然存在,您可以在 ILNumerics bugtracker 上提交错误,因为,运行时应该在那里,正如您所写的那样,您正在使用 VS2012。不过可能是版本控制问题。

编辑:从 4.0 版开始,ILNumerics 不再在 bin32/bin64/子文件夹中部署 native 二进制文件,而是将系统范​​围内的所有 native 依赖项安装到 GAC 和 System32/WOW 文件夹中。不过,旧方案仍然有效(为了与旧项目兼容)。但是不再需要明确处理 ILNumerics 的任何依赖关系。它们应该在运行时简单地找到。

关于c# - 初学者 ILNumerics : install under VS2012,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17673326/

相关文章:

c# - 将 PDF 中的外部链接转换为链接到 iTextSharp 中的嵌入式附件

c# - 针对 amd64 与项目的目标平台 x86 c# 不兼容

c# - 从netcore C#控制台应用程序调用rust dll时发生System.BadImageFormatException

C#:开关与工厂类中的方法重载

unit-testing - 如何按类别过滤 Visual Studio 2012 中的单元测试?

c++ - 使用 && 和 & 的优化行为

c# - ILSurface 绘图参数

ilnumerics - 多个 PlotCube 同步

asp.net-mvc-4 - 在 VS2012 中使用包管理器控制台安装 Mvc 脚手架包时出错

c# - 如何在 ILNumerics 中钳位数组数据