初学者ILNumerics:在VS2012下安装

ale*_*est 5 c# visual-studio-2012 ilnumerics

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

我已经开始使用控制台应用程序,并试图运行'hello ilnumerics'console应用程序,但我注意到VS无法找到MKL库.

我在Windwos 8下使用VS2012(在2010年中期的MacBook Pro上通过Bootcamp;它是否相关); 我已从Project解决方案中安装了NuGet Packages扩展.然后右键单击解决方案资源管理器中的引用,"管理Nu获取包",在线/搜索各种版本的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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到此异常:ILNumerics.dll中出现未处理的"System.DllNotFoundException"类型异常

附加信息:无法加载DLL'mkl_custom':找不到指定的模块.(来自HRESULT的异常:0x8007007E)

如果我不调用linsolve,ILArray的ToString方法确实有效:如果我发表评论// ILArray Result = linsolve(A,B);

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

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

有任何帮助/提示吗?

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

小智 3

两种选择:

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

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

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

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