抱歉,如果这个问题已经被提出,请见谅,但我没找到我一直在寻找的东西。 我想知道是否有一种方法可以在没有使用MCR / MATLAB(或通常任何其他安装)的情况下在C#中使用MATLAB编译的c-shared库,例如使用此简单函数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(这将使事情变得容易得多),但现在我受制于此。
感谢您的帮助。