Как использовать скомпилированную DLL MATLAB -на C #без MCR/MATLAB?

Извините, если этот вопрос уже задавался, но я не смог найти то, что искал. Мне было интересно, есть ли способ работать с скомпилированной MATLAB общей библиотекой c -в 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)

а затем попытаться получить данные из x, y, z, немного поработав с Marshal? Я полагаю, что я также делаю некоторые довольно очевидные ошибки, например. Я не уверен, что могу просто передать ref double[,] в dll и ожидать, что она сработает.

Я полагаю, что в случае крайней необходимости я мог бы использовать MCR (, что значительно упростило бы задачу ), но сейчас я ограничен.

Заранее спасибо за вашу помощь.

5
задан Amro 11 July 2012 в 12:37
поделиться