C#调用Matlab--解决外部引用包问题(全网唯一)

1、好久没写文章了,今天给大家带来的是C#调用matlab程序的解决方案。

2、应用场景:C#调用matlab网上已经有很多文章了,但本文主要解决的是无法调用时的问题。

如当Matlab调用外部包(CVX、IPOPT、gurobi、yalmip等优化求解器)在编译为C#的类库时,会提示一部分的文件无法编译,这是因为部分代码没有被授权。C#调用时大家可以试试,计算基本都会失效。

C#调用Matlab--解决外部引用包问题(全网唯一)_第1张图片

 3、解决方案:C#+python+matlab(难以解决)

①matlab支持python,因此在python环境中可以直接运行matlab脚本,这样就避免了由于许可证问题引起的无法打包问题,因为完全不需要打包操作。

②C#可以调用python,但是由于python执行matlab函数时会调用matlab.engine包,而这个包首先需要与自己电脑的matlab版本适配,其次C#现在只开发了IronPython2.7与IronPython3.4,也就是仅支持2.7与3.4版本的python,而2018年后的matlab已经弃用了低于3.4版本的python,因此这样就造成了此路不太容易成功的问题。版本问题可以看我之前写的文章,下面是传送门。

nodejs调用matlab的.m文件_发光的沙子的博客-CSDN博客在一些web服务中,后台采用nodejs轻量化服务器接口,而matlab的.m文件编写了算法模块,两者调用时,官方没有提供相应的文档(当然也可能我没找到)。2、pycharm 中新建python项目,并建立test.py文件,将matlab的.m文件拖入到同一目录下。_js调用matlabhttps://blog.csdn.net/qq_37912811/article/details/1285143064、解决方案:python+matlab生成可执行exe文件,C#调用这个exe(完美解决)

①介绍:python有个包叫pyinstaller,直接装一下就行,然后生成exe文件,这里注意哦,使用“pyinstaller -D xxxx.py”这个命令生成的exe可以在cmd中调试,查看报错信息。等待错误排查完毕后,再使用“ pyinstaller -F -w -i xxxx.ico xxxx.py”可生成以xxxx.ico为图标的xxxx.exe的应用程序。

当然,我用的是“pyinstaller -D xxxx.py”这个命令,因为执行第二条命令生成的exe一直存在路径问题。下面是使用截图。

C#调用Matlab--解决外部引用包问题(全网唯一)_第2张图片

C#调用Matlab--解决外部引用包问题(全网唯一)_第3张图片

 

 

②可能出现的问题:

a、提示xxxx函数未定义,把m文件复制到xxxx.exe文件夹下。

b、提示“xxxxxx_arch.txt......xxxx”之类的问题,把 python的Lib\site-packages下的matlab文件复制到xxxx.exe文件夹下。

c、实在解决不了,联系作者即可

你可能感兴趣的:(c#,matlab,算法)