创建在Linux上运行的 .NET Core 应用程序(matlab封装的dll文件)
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文件)相关推荐
- 使用 Docker 在 Linux 上托管 ASP.NET Core 应用程序
说在前面 在阅读本文之前,您必须对 Docker 的中涉及的基本概念以及常见命令有一定了解,本文侧重实战,不会对相关概念详述. 同时请确保您本地开发机器已完成如下安装: Docker 18.06 或更 ...
- c#如何在linux上运行程序,在Linux上运行C#
众所周知,C#是Microsoft推出的.NET语言,只能在.NET平台上运行,例如Win 9x.ME.NT.2000.XP和Win CE之类的操作系统.但是,现在却有了一个叫做Mono的项目,它的目 ...
- 电脑显示没有被指定在上运行_电脑出现“损坏的图像”窗口提示dll没有被指定在Windows上运行如何解决...
一些用户在电脑中出现了无法运行应用程序的情况,弹出一个"***.exe - 损坏的图像"的窗口,上面提示"***.dll没有被指定在Windows上运行--" ...
- linux上运行项目,发布项目到 Linux 上运行 Core 项目
目录索引 简介 ASP.Net Core 给我们带来的最大的亮点就是跨平台,我在我电脑(win7)上用虚拟机建了个 CentOS7 ,来演示下,我们windows上的项目如何发布项目到Linux上运行 ...
- Docker在Linux上运行NetCore系列(一)配置运行DotNetCore控制台
Docker在Linux上运行NetCore系列(一)配置运行DotNetCore控制台 原文:Docker在Linux上运行NetCore系列(一)配置运行DotNetCore控制台 转发请注明此文 ...
- linux里运行windows,在Linux上运行Windows应用程序
当前位置:我的异常网» Linux/Unix » 在Linux上运行Windows应用程序 在Linux上运行Windows应用程序 www.myexceptions.net 网友分享于:2015- ...
- linux java的启动内存溢出,java - Java的R代码可在Linux上运行,但不能在Windows中运行 - 堆栈内存溢出...
我在做什么? 我正在用Java编写一个数据分析程序,该程序依赖R的arulesViz库来挖掘关联规则. 我想要什么? 我的目的是将规则存储在Java中的String变量中,以便以后进行处理. 它是如何 ...
- 如何在Linux上运行Windows软件?
因此,您已经准备好过渡到Linux ,但是您仍然有一些程序还不十分乐于使用. 您仍然可以在Linux上运行Windows软件吗? 答案可能是肯定的,但是有一些警告. 在继续之前,我想作一个重要的区分. ...
- linux如何运行windows游戏,如何在Linux上运行Windows应用程序和游戏 互联网技术圈 互联网技术圈...
在本教程中,我将向您介绍如何在Linux中运行Windows应用程序和游戏.您可能知道,Microsoft Windows使用DirectX来运行游戏.因此,在Windows平台上玩一些需要Direc ...
最新文章
- 进程的同步、互斥以及PV原语
- Python基础第27天
- 【ARM】ARM其它指令
- 刷爆了!这份被程序员疯传的Python神作牛在哪?
- as cast float server sql_面试常考!SQL行转列和列转行
- backbone, AngularJS, EmberJS 简单比较
- 视频编解码(十二):播放器编解码流程source、demux、decoder、output
- Ns3 构建哑铃型拓扑,并实现两个点的TCP连接(详细请戳全文)
- 23种设计模式(二十)数据结构之迭代器
- 删除链表中相邻重复元素
- JDK = JRE + 编译器 + api + tools
- Vim安装gruvbox配色教程,切换黑暗模式
- 【晶体管电路设计】五、渥尔曼电路设计
- Tomcat 500错误:实例化Servlet类异常
- 35岁中年程序员的焦虑和64岁谷歌老程序员的补丁
- 小米怎么和计算机连接网络连接网络,电脑怎么连接小米路由器上网
- 利用Data URL(data:image/jpg;base64,)加速网页加载的方法
- java mac excel 中文乱码_解决mac excel中文乱码的问题
- 计算机启动后无法进入系统怎么办,电脑开机无法进入系统怎么办
- 信号、signal 函数、sigaction 函数