接上文:使用C#开发进程外COM组件
准备用Excel配合CNTK试试训练机器学习模型.因为CNTK桌面版只支持X64,所以就必须开发一个进程外COM组件给Excel调用,相比进程内方式复杂了很多,进程内COM组件开发参考:
https://bettersolutions.com/csharp/excel-interop/vba-calling-csharp-automation-add-in.htm
进程外COM组件注册: 注册COM组件的同时还要安装SCM服务
set regasmPath=%windir%\Microsoft.NET\Framework64\v4.0.30319\regasm.exe set InstallutilPath=%windir%\Microsoft.NET\Framework64\v4.0.30319\Installutil.exe cd /d F:\MyStorage_SongShiZhao\DesktopBridge\MathNetExcelApp\MachineLearningCNTK\bin\x64\Debug\ %regasmPath% MachineLearningCNTK.exe :: uninstall previous version %InstallutilPath% /u MachineLearningCNTK.exe :: install new version %InstallutilPath% MachineLearningCNTK.exe pause
64位进程外COM组件已开发好,因为是进程外的COM组件,所以32位x86版本的excel可以跨进程调用不受进程限制.
在Excel中使用VBA调用com组件,使用后期绑定的方式
Function helloworld() 'matA As Range, matB As Range, Optional name = "cntk.trainer" Dim addin As Variant Set addin = CreateObject("MachineLearningCNTK.SimpleObject") helloworld = addin.helloworld() End Function测试成功通过,撒花~