matlab社区:https://ww2.mathworks.cn/help/releases/R2019b/compiler_sdk/dotnet/create-a-dotnet-core-application-that-runs-on-linux-and-macos.html#mw_bc415a68-a610-472d-b98e-ff757500f504

创建 .NET 程序集
1、创建需要打包的函数,此处以魔方矩阵函数为例:

     function out = mymagic(in)out = magic(in);


2、libraryCompiler在 MATLAB 命令行中键入以启动 Library Compiler 应用程序。

3、在工具条的TYPE部分中,选择 .NET Assembly,然后在EXPORTED FUNCTIONS部分中单击Add按钮将文件添加mymagic.m到项目中。

4、在库信息部分,将库命名为 MyMatrixFunctions。将默认类名从 更改 Class1为MyMagic。

5、使用默认项目名称保存部署项目 MyMatrixFunctions。

6、选择包以创建 .NET 程序集。有关创建的文件的信息,请参阅打包 MATLAB 函数后生成的文件(MATLAB 编译器)。

创建 .NET Core 应用程序
1、直接搜powershell,进入命令编辑器,并导航到文件夹C:\work(可以根据自己需要放在那个文件夹下面都行,我是放在C:\work)。

cd C:\work


2、在命令行中,键入:

dotnet new console --name MyDotNetCoreApp

这将创建一个名为的文件夹MyDotNetCoreApp,其中包含以下内容:
obj 文件夹
MyDotNetCoreApp.csproj 项目文件
Program.cs C#源文件

3、在文本编辑器中打开MyDotNetCoreApp.csproj 项目文件。
里面的内容如下:

<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><OutputType>Exe</OutputType><TargetFramework>netcoreapp2.0</TargetFramework></PropertyGroup></Project>

使用标签向项目添加以下引用 :
MyMatrixFunctions.dll由库编译器应用程序创建的.NET 程序集文件。
C:\work\MyMatrixFunctions\for_redistribution_files_only\MyMatrixFunctions.dll为MyMatrixFunctions.dll的地址,你的地址可能和我的地址不一样,注意要改一下
MWArray.dll是将c#的数据格式转译成MATLAB能读的文件,这个文件可以在你安装MATLAB的路径里面找,我的是在D:\ProgramFiles\MATLABR2020a\toolbox\dotnetbuilder\bin\win64\v4.0中,应该都可以在安装路径的“toolbox\dotnetbuilder\bin\win64\v4.0”中找到,
添加引用后,项目文件如下所示:

<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><OutputType>Exe</OutputType><TargetFramework>netcoreapp3.1</TargetFramework></PropertyGroup><ItemGroup><Reference Include="MyMatrixFunctions"><HintPath>C:\work\MyMatrixFunctions\for_redistribution_files_only\MyMatrixFunctions.dll</HintPath><!--Path to .NET Assembly created by Library Compiler app--></Reference><Reference Include="MWArray"><HintPath>C:\Program Files\MATLAB\MATLAB Runtime\v97\toolbox\dotnetbuilder\bin\win64\v4.0\MWArray.dll</HintPath><!--Path to MWArray.dll in the MATLAB Runtime--></Reference></ItemGroup>
</Project>

4、打开 C# 源文件Program.cs并将现有代码替换为以下代码:

// *******************************************************************************
//
// Program.cs
//
// This example demonstrates how to use MATLAB .NET Assembly to build a simple
// component returning a magic square and how to convert MWNumericArray types
// to native .NET types.
//
// Copyright 2001-2019 The MathWorks, Inc.
//
// *******************************************************************************using System;using MathWorks.MATLAB.NET.Utility;
using MathWorks.MATLAB.NET.Arrays;using MyMatrixFunctions;namespace MathWorks.Examples.MagicSquare
{/// <summary>/// The MagicSquareApp class computes a magic square of the user specified size.  /// </summary>/// <remarks>/// args[0] - a positive integer representing the size of the magic square./// </remarks>class Program{#region MAIN/// <summary>/// The main entry point for the application./// </summary>[STAThread]static void Main(string[] args){MWNumericArray arraySize= null; MWNumericArray magicSquare= null;try{// Get user specified command line arguments or set defaultarraySize= (0 != args.Length) ? Double.Parse(args[0]) : 4;// Create the magic square objectMyMagic magic= new MyMagic();// Compute the magic square and print the resultmagicSquare= (MWNumericArray)magic.mymagic(arraySize);Console.WriteLine("Magic square of order {0}\n\n{1}", arraySize, magicSquare);// Convert the magic square array to a two dimensional native double arraydouble[,] nativeArray= (double[,])magicSquare.ToArray(MWArrayComponent.Real);Console.WriteLine("\nMagic square as native array:\n");// Display the array elements:for (int i= 0; i < (int)arraySize; i++) for (int j= 0; j < (int)arraySize; j++)Console.WriteLine("Element({0},{1})= {2}", i, j, nativeArray[i,j]);Console.ReadLine();  // Wait for user to exit application}catch(Exception exception){Console.WriteLine("Error: {0}", exception);}}#endregion}}

5、在命令 shell 中,键入以下内容来构建 .NET Core 项目:

dotnet build MyDotNetCoreApp.csproj

6、在命令 shell 中,通过键入以下内容来运行您的应用程序:

dotnet run -- 3

这将显示一个 3x3 魔方。
7、将项目作为独立部署发布,以便在 Linux 或macOS上执行应用程序。此示例发布到 Linux。在命令 shell 中,键入:

dotnet publish --configuration Release --framework netcoreapp2.2 --runtime linux-x64 --self-contained true MyDotNetCoreApp.csproj

要发布到macOS,请键入:

dotnet publish --configuration Release --framework netcoreapp3.1 --runtime osx.10.11-x64 --self-contained true MyDotNetCoreApp.csproj

这一步创建完成之后就会多出一个bin文件夹。

在Linux上运行 .NET Core 应用程序
1、将Release文件夹从 C:\work\MyDotNetCoreApp\bin复制到Linux 机器上。文件复制方法有很多种,根据自己需要自行查找和安装。
2、在 Linux 机器上,验证您是否已安装MATLAB Runtime并设置您的LD_LIBRARY_PATH环境变量。
如果没有安装可以查看我写的上一篇文章。Ubentu(20.04)安装Matlab Compiler Runtime(2020a),centos系统安装也是一样的步骤。
3、打开命令编辑器并导航到:
~/Work/Release/netcoreapp3.1/linux-x64/publish
根据自己文件放入的位置,导航到对应的位置。
4、通过键入以下内容运行 .NET Core 应用程序:

./MyDotNetCoreApp 3如果linux系统报权限不够时,可以运行
sudo chmod 777 ./MyDotNetCoreApp
再运行
./MyDotNetCoreApp 3

输出
3阶魔方举证
8 1 6
3 5 7
4 9 2
作为原生数组的幻方:
Element(0,0)= 8
Element(0,1)= 1
Element(0,2)= 6
Element(1,0) = 3
元素(1,1)= 5
元素(1,2)= 7
元素(2,0)= 4
元素(2,1)= 9
元素(2,2)= 2

创建在Linux上运行的 .NET Core 应用程序(matlab封装的dll文件)相关推荐

  1. 使用 Docker 在 Linux 上托管 ASP.NET Core 应用程序

    说在前面 在阅读本文之前,您必须对 Docker 的中涉及的基本概念以及常见命令有一定了解,本文侧重实战,不会对相关概念详述. 同时请确保您本地开发机器已完成如下安装: Docker 18.06 或更 ...

  2. c#如何在linux上运行程序,在Linux上运行C#

    众所周知,C#是Microsoft推出的.NET语言,只能在.NET平台上运行,例如Win 9x.ME.NT.2000.XP和Win CE之类的操作系统.但是,现在却有了一个叫做Mono的项目,它的目 ...

  3. 电脑显示没有被指定在上运行_电脑出现“损坏的图像”窗口提示dll没有被指定在Windows上运行如何解决...

    ‍ 一些用户在电脑中出现了无法运行应用程序的情况,弹出一个"***.exe - 损坏的图像"的窗口,上面提示"***.dll没有被指定在Windows上运行--" ...

  4. linux上运行项目,发布项目到 Linux 上运行 Core 项目

    目录索引 简介 ASP.Net Core 给我们带来的最大的亮点就是跨平台,我在我电脑(win7)上用虚拟机建了个 CentOS7 ,来演示下,我们windows上的项目如何发布项目到Linux上运行 ...

  5. Docker在Linux上运行NetCore系列(一)配置运行DotNetCore控制台

    Docker在Linux上运行NetCore系列(一)配置运行DotNetCore控制台 原文:Docker在Linux上运行NetCore系列(一)配置运行DotNetCore控制台 转发请注明此文 ...

  6. linux里运行windows,在Linux上运行Windows应用程序

    当前位置:我的异常网» Linux/Unix » 在Linux上运行Windows应用程序 在Linux上运行Windows应用程序 www.myexceptions.net  网友分享于:2015- ...

  7. linux java的启动内存溢出,java - Java的R代码可在Linux上运行,但不能在Windows中运行 - 堆栈内存溢出...

    我在做什么? 我正在用Java编写一个数据分析程序,该程序依赖R的arulesViz库来挖掘关联规则. 我想要什么? 我的目的是将规则存储在Java中的String变量中,以便以后进行处理. 它是如何 ...

  8. 如何在Linux上运行Windows软件?

    因此,您已经准备好过渡到Linux ,但是您仍然有一些程序还不十分乐于使用. 您仍然可以在Linux上运行Windows软件吗? 答案可能是肯定的,但是有一些警告. 在继续之前,我想作一个重要的区分. ...

  9. linux如何运行windows游戏,如何在Linux上运行Windows应用程序和游戏 互联网技术圈 互联网技术圈...

    在本教程中,我将向您介绍如何在Linux中运行Windows应用程序和游戏.您可能知道,Microsoft Windows使用DirectX来运行游戏.因此,在Windows平台上玩一些需要Direc ...

最新文章

  1. 进程的同步、互斥以及PV原语
  2. Python基础第27天
  3. 【ARM】ARM其它指令
  4. 刷爆了!这份被程序员疯传的Python神作牛在哪?
  5. as cast float server sql_面试常考!SQL行转列和列转行
  6. backbone, AngularJS, EmberJS 简单比较
  7. 视频编解码(十二):播放器编解码流程source、demux、decoder、output
  8. Ns3 构建哑铃型拓扑,并实现两个点的TCP连接(详细请戳全文)
  9. 23种设计模式(二十)数据结构之迭代器
  10. 删除链表中相邻重复元素
  11. JDK = JRE + 编译器 + api + tools
  12. Vim安装gruvbox配色教程,切换黑暗模式
  13. 【晶体管电路设计】五、渥尔曼电路设计
  14. Tomcat 500错误:实例化Servlet类异常
  15. 35岁中年程序员的焦虑和64岁谷歌老程序员的补丁
  16. 小米怎么和计算机连接网络连接网络,电脑怎么连接小米路由器上网
  17. 利用Data URL(data:image/jpg;base64,)加速网页加载的方法
  18. java mac excel 中文乱码_解决mac excel中文乱码的问题
  19. 计算机启动后无法进入系统怎么办,电脑开机无法进入系统怎么办
  20. 信号、signal 函数、sigaction 函数

热门文章

  1. Python图像处理库PIL中图像格式转换(一)
  2. 使用libcurl库把域名转化IP
  3. 基于Webio交互的Pyecharts数据分析脚本小记
  4. 架构分析:「转转云平台」的 Kubernetes 实践
  5. Codeforces 104C Cthulhu dfs暴力 || 点双连通缩点
  6. 二分查找 找一个比目标数小的最大数
  7. 携手华为,瑞金医院病理科为健康数字化保驾护航
  8. 电牛上位机 电牛一号、二号,鹏辉电池、天劲电池等车型
  9. 登陆千牛时显示服务器失败,千牛登陆云服务器
  10. 10k+ 面试试题难度怎么样?python带你采集一探究竟~