我正在尝试使用通过 dotnetbuilder 从 matlab 创建的 dll 文件(http://www.mathworks.se/help/dotnetbuilder/ug/create-a-net-component-from-matlab-code.html)..
为了使用该 dll,我必须添加对名为“MWArray.dll”的 matlab dll 的引用(http://www.mathworks.se/help/dotnetbuilder/ug/integrate-your-net-component-in-a-c-application.html),遗憾的是这个 dll 似乎只适用于 .net 2.0。
我能够使简单的控制台应用程序与我从 matlab 创建的 dll 一起工作的唯一方法是执行以下操作:
- 在 matlab 中构建 .net 2.0 的 dll 时,将其作为目标
点网构建器。
- 更改我的控制台中使用的 .net 版本
应用到2.0版本
如果我不这样做,当我尝试运行该项目时,控制台应用程序将崩溃 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..?
我在用:
- VS2013
- MATLAB R2013b(64 位)