2

我从 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# 包装器(仅包含相关的代码行)

...

// ----- 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)。有谁知道如何解决这个问题?

提前致谢

马丁

4

0 回答 0