我正在尝试使用通过dotnetbuilder(http://www.mathworks.se/help/dotnetbuilder/ug/create-a-net-component-from-matlab-code.html)从matlab创建的dll文件。
为了使用该dll,我必须添加对名为“ MWArray.dll”的matlab dll的引用(http://www.mathworks.se/help/dotnetbuilder/ug/integrate-your-net-component-in- ac-application.html),遗憾的是,该dll似乎仅适用于.net 2.0。
我能够使一个简单的控制台应用程序与我从matlab创建的dll一起工作的唯一方法是执行以下操作:
如果我不这样做,则当我尝试运行项目时,控制台应用程序将崩溃vshost.exe。
我希望能够使用.net 4. +功能,因此将项目配置为使用.net 2.0是不可接受的。.当我使这个简单的控制台应用程序至少以.net 4.0运行时,我将尝试获取它。也可以在F#3.0应用程序中工作。
我的程序如下所示:
...
using MathWorks.MATLAB.NET.Arrays;
using makesquare;
namespace Matlabski
{
class Program
{
static void Main(string[] args)
{
try
{
var stuff = new makesquare.MLTestClass();
var res = stuff.makesquare(1, 3);
Console.WriteLine(res[0]);
Console.WriteLine("sdfsdf");
}
catch (Exception e)
{
Console.WriteLine(e);
}
Console.ReadKey();
}
}
}
并且我尝试编辑app.config文件以能够同时处理.net 2和4:
<?xml version="1.0"?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
<supportedRuntime version="v2.0"/>
</startup>
</configuration>
但这不起作用..
是否可以将项目设置为可以同时使用.net 2.0和4.5,这将使我的项目正常工作吗?还是我必须做其他事情才能使用此烦人的.net 2.0 dll ..?
我在用:
解决了问题!
我编译了针对.net 4的matlab函数...然后添加了
[assembly: MathWorks.MATLAB.NET.Utility.MWMCROption("-nojit")]
到代码。
结果代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MathWorks.MATLAB.NET.Arrays;
using makesquare;
[assembly: MathWorks.MATLAB.NET.Utility.MWMCROption("-nojit")]
namespace Matlabski
{
class Program
{
static void Main(string[] args)
{
try
{
MLTestClass stuff = new MLTestClass();
object[] res = stuff.makesquare(1, 3);
Console.WriteLine(res[0].ToString());
Console.WriteLine("sdfsdf");
}
catch (Exception e)
{
Console.WriteLine(e);
}
Console.ReadKey();
}
}
}
app.config看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
</configuration>
但是,似乎不需要app.config ...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句