抱歉,如果这个问题已经被问过,但我找不到我一直在寻找的东西。我想知道是否有一种方法可以在 C# 中使用 MATLAB 编译的 c 共享库而不使用 MCR/MATLAB(或通常任何额外的安装),例如使用这个简单的函数 test.m,通过 mcc 将其编译成.dll 然后在 C# 中使用它:
[x,y,z]=test(a,b,c)
%x,a are integers
%y,z,b are matrices
%c is a string (which e.g. could be used to switch between several modes)
x=a*a;
y=b*b-b;
z=y*y;
我不完全确定这样做是否可能(更不用说容易了),但即使使用这个简单的示例,我也无法让它在 C# 中工作,尽管这也可能与我非常有限的 C# 经验有关。我想在这个例子中我将不得不使用 IntPtr 来处理矩阵,例如:
[DllImport("test.dll",EntryPoint="mlfTest")]
public static extern void testfunction([In] numargout, ref IntPtr x, ref IntPtr y, ref IntPtr z, [In] IntPtr a, [In] ref double[,] b, [In] ref c)
然后尝试通过与 Marshal 一起工作来从 x,y,z 中获取数据?我想我也犯了一些相当明显的错误,例如我不确定我是否可以将 ref double[,] 传递给 dll 并期望它能够工作。
我想如果绝对必要的话,我可以使用 MCR(这会使事情变得容易得多),但现在我受到了限制。
在此先感谢您的帮助。