我在从C#调用Matlab函数时遇到问题。当我调用Matlab函数时,会出现访问冲突错误(0x00000005)。
创建了简单的Matlab功能:
function fcnHelloStrIn(str)
fprintf(sprintf('Hello world ... %s\n\n', (str)));
包含此功能的 dll库由Matlab编译器(4.17)创建
bool MW_CALL_CONV mlxFcnHelloStrIn(int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[]);
我尝试按如下方式实现简单的C#wrapper (仅包含相关的代码行)
...
// ----- DLL import -----
[DllImport("HelloDll.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Auto)]
public static extern bool mlxFcnHelloStrIn([In] int nlhs, ref IntPtr outParams, [In] int nrhs, [In] IntPtr inParams);
...
MCR and Dll initialization function // OK
...
// ----- Main part -----
IntPtr outputPtr = IntPtr.Zero;
IntPtr stringPtr = IntPtr.Zero;
string helloString = "Hello world!";
stringPtr = mxCreateString(helloString);
bool result = mlxFcnHelloStrIn(0, ref outputPtr, 1, stringPtr);
....
当我调用函数 mlxFcnHelloStrIn 时,会出现访问冲突错误(0xc0000005)。有人知道如何解决这个问题吗?
提前致谢
马丁