VS(C#)+MATLAB混合开发

文章目录

  • 一.matlab函数导出为.dll
        • VS调用MATLAB生成的DLL
        • 如何从VS中调用MATLAB神经网络工具箱
        • 调用matlab封装的DLL及数组类型转换
  • 二.vs连接oracle
        • vs2017连接oracle的方法
        • C#配置文件App.config的使用操作
  • 三.安装部署
        • 在线制作ico图标
        • 平台支撑
        • C#远程连接Oracle数据库(不安装客户端)
        • Oracle数据库插入数据中文乱码显示问号???
        • C#写入文件的几种方式

前言:在独自开发一个工程项目时遇到了各种BUG,造成了很大的困扰,短则半天,长则一周才得以解决。在此期间搜索查阅了各种资料,现做一个简单的小结。

一.matlab函数导出为.dll

VS调用MATLAB生成的DLL

具体步骤不再复述,需要注意的点为:matlab必须为破解版,否则可能没有deploytool工具箱使用权限。

如何从VS中调用MATLAB神经网络工具箱

对于待编译的函数调用了子函数,分两种情况:
(1) 调用自己编写的子函数,这样编译时需要将所有的函数放在同一个文件夹下,这样编译时会自动将被调用的子函数;
(2) 调用了matlab自带的函数,这种无所谓,直接编译就可以了,matlab会自动按照环境变量的设置去寻找库里的子函数。
借助这一结论,作者机智地将newff.m拷贝到了当前编译工程目录下,从而成功调用神经网络工具箱。

调用matlab封装的DLL及数组类型转换

在VS调用.dll文件中的函数时,输入输出都需要进行数组MWArray封装。

二.vs连接oracle

vs2017连接oracle的方法

值得一提的是,由于程序最终需要打包给用户使用,此处的connectiontString不能写成固定值,必须改成从配置文件(.config)中读取,具体操作如下所示。

C#配置文件App.config的使用操作

三.安装部署

此处的bug最多,Oracle数据库的运行对配置要求特别苛刻,而用户的环境又各式各样,导致了各种棘手的问题。

在线制作ico图标

本项目采用直接打包bin\Debug文件的方式,做成绿色免安装版。首先在线制作图标文件(.ico),接着打开C#项目的属性,对生成程序集的名称和图标进行更换,最后保存设置,运行项目即可。
VS(C#)+MATLAB混合开发_第1张图片

平台支撑

一个是.NET Framework,版本与VS项目的目标框架版本一致,另一个是MCR(MATLAB Runtime)。如果没有安装数据库,还需要Oracle Instant Client,具体如下:

C#远程连接Oracle数据库(不安装客户端)

在将软件安装到用户电脑上后,一直连不上数据库,这是遇到的最大问题。首先是在有数据库的服务器(windows server2008)上无法运行,推测可能是Oracle版本不一致,以及一些配置原因。其次是在没有装数据库的电脑(win7)上,在安装了oracle client后也一直无法连接,报错“System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本”。最后从Oracle官网下载了“instantclient-basic-win64-10.2.0.5.zip”,问题才得以解决。

Oracle数据库插入数据中文乱码显示问号???

在对Oracle进行读写测试时,发现了中文字符全变成了“?”,黑人问号脸。一番研究,发现原来还得手动配置环境变量。

C#写入文件的几种方式

题外话,在进行Debug找错时,将try~catch得到的的Exception写入log日志是一个不错的方法,非常方便处理错误,且不会让程序中断运行。

你可能感兴趣的:(VS(C#)+MATLAB混合开发)