2014-07-15 1 views
1

MathNet.Numerics 라이브러리를 작동 시키려고했습니다. 행렬을 초기화하려고 할 때마다 이상한 런타임 오류가 계속 발생합니다. 나는 행운이없이 비슷한 문제의 게시물을 인터넷에서 샅샅이 뒤졌다. 이것은 아마도 내가 잠재적으로 명백한 것을 놓친 것 같아서 만들었습니다. 매트릭스를 사용하는 방법에 대한 math.net 예제 사이트에서 가져온 것이므로 코드가 문제라고 생각하지는 않지만 오류를 만드는 코드뿐만 아니라 라이브러리를 어떻게 포함 시켰는지 설명 할 것입니다.MathNet Numerics 라이브러리에서 런타임 오류가 계속 발생합니다. 작동하지 않는 것 같습니다.

그래서! 라이브러리를 가져 오는 두 가지 방법을 시도했습니다. 첫 번째는 NuGet 패키지 관리자 콘솔 및 쓰기 설치 패키지 MathNet.Numerics 그 자체입니다! 두 번째 방법은 Manage NuGet Packages를 여는 것입니다. 그런 다음 mathnet.numerics를 검색 한 다음 설치하십시오. 나에게 이것은 이전 방법과 똑같은 일을한다. 맞지?

이제 아무런 오류없이 다음 코드를 작성할 수 있기 때문에 어쨌든 라이브러리를 가져온 것 같습니다.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using MathNet.Numerics.LinearAlgebra;   // Maybe unnecessary to include this   one as well as the one below 
using MathNet.Numerics.LinearAlgebra.Double; 

namespace ConsoleApplication5 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 

      Matrix<double> A = DenseMatrix.OfArray(new double[,] { 
                   {1,1,1,1}, 
                   {1,2,3,4}, 
                   {4,3,2,1}}); 
      Vector<double>[] nullspace = A.Kernel(); 
     } 
    } 
} 

그런 다음 문제를 해결할 수 있습니다. 나는 의심이있다! 방금 빌드합니다. 즉, 솔루션을 마우스 오른쪽 버튼으로 클릭하고 빌드! 오류 없음!

다음 프로그램을 실행하면 DeseMatrix.OfArray ....가 실행될 때 다음과 같은 예외가 발생합니다.

형 'System.TypeInitializationException'처리되지 않은 예외 MathNet.Numerics.dll 에 추가 정보를 발생 'MathNet.Numerics.LinearAlgebra.Storage.MatrixStorage`1'형식 이니셜 예외가 발생했습니다.

이렇게 오랜 질문을 결론 지으면서 : 나는 무엇을 놓치고 있습니까?

추신. 프로젝트는 .Net 3.5로 실행해야합니다. 걱정하지 마라. 나는 또한 똑같은 일을 .net 4.5에서하려고 노력했다. 또한 여러 컴퓨터에서이 솔루션을 사용해 보았는데 둘 다 7과 8로 이겼습니다.

답변

1

오늘이 문제가있었습니다. TaskParallelLibrary를 추가해야했습니다. 마우스 오른쪽 버튼으로 참조를 클릭하고, nuget 패키지를 관리하고 온라인으로 taskparallel을 검색하십시오. 이 문제가 해결되었습니다. 의존성 인 것처럼 보입니다.

+1

굉장한 사람, 작동합니다! 감사합니다 –

+0

TaskParallelLibrary는 종속이지만,. NET 3.5 빌드에만 해당됩니다. 대상 프레임 워크간에 전환 할 때 NuGet 패키지를 다시 설치해야 함을 유의하십시오 (Update-Package -Reinstall) –

관련 문제