我得到一个奇怪的System.Action TypeLoadException,同时乘以两个矩阵,任何人都可以帮忙吗?
我在VS2008中创建了一个新项目,32位,并将目标框架更改为2.0,包括MathNet.Numerics.dll并执行以下代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Numerics;
using MathNet.Numerics.Statistics;
using MathNet.Numerics.LinearAlgebra;
using MathNet.Numerics.LinearAlgebra.Double;
using MathNet.Numerics.LinearAlgebra.Double.Factorization;
namespace MathNetTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
double[,] A = new double[3, 3];
A[0, 0] = 1;
A[0, 1] = 0.2;
A[0, 2] = 1;
A[1, 0] = 1.5;
A[1, 1] = -1.2;
A[1, 2] = 1.1;
A[2, 0] = 0.45;
A[2, 1] = 2.1;
A[2, 2] = -0.76;
Matrix XA = new DenseMatrix(A);
Matrix XB = new DenseMatrix(A);
Matrix C = (Matrix)(XA * XB); // throws a TypeLoadException
}
}
}
答案 0 :(得分:2)
的更新强>
MathNet.Numerics要求.NET Framework#4.0支持System.Numerics。
我在Mono / MS.NET#4.0上没有这样的问题(见下面的例子)
这是从google code
下载的libs如果我的回答对您没有帮助,请在GAC中检查MathNet的冲突版本,并优先设置参考文献t
最小的tetst程序(控制台应用程序):
using MathNet.Numerics.LinearAlgebra.Double;
public class Program
{
public static void Main(string[] args)
{
double[,] A = new double[3, 3];
A[0, 0] = 1;
A[0, 1] = 0.2;
A[0, 2] = 1;
A[1, 0] = 1.5;
A[1, 1] = -1.2;
A[1, 2] = 1.1;
A[2, 0] = 0.45;
A[2, 1] = 2.1;
A[2, 2] = -0.76;
Matrix XA = new DenseMatrix(A);
Matrix XB = new DenseMatrix(A);
Matrix C = (Matrix)(XA * XB); // throws a TypeLoadException
}
}
编译
dmcs -optimize+ -reference:MathNet.Numerics.dll test.cs
运行正常
更新 VS2010(WinXP 64)也没问题:
T:\lib\Net40>csc test.cs -reference:MathNet.Numerics.dll
Microsoft (R) Visual C# 2010 Compiler version 4.0.30319.1
Copyright (C) Microsoft Corporation. All rights reserved.
T:\lib\Net40>.\test.exe