Arrays 如何将Delphi中的二维数组传递到matlabdll

Arrays 如何将Delphi中的二维数组传递到matlabdll,arrays,matlab,delphi,Arrays,Matlab,Delphi,我有个问题。 我可以通过Delphi将2D数组传递到由CODBROCK创建的C++ DLL。 我在C++ DLL中的功能是: double __declspec(dllexport) __cdecl mainFunction(double** arr, int64 length) 我在Delphi中调用DLL的函数是: type DynMatrixDouble = array of array of double; . . function arr(X:DynMatrixDouble; Y

我有个问题。 我可以通过Delphi将2D数组传递到由CODBROCK创建的C++ DLL。 我在C++ DLL中的功能是:

double __declspec(dllexport)  __cdecl mainFunction(double** arr, int64 length)
我在Delphi中调用DLL的函数是:

type
 DynMatrixDouble = array of array of double;
.
.
function arr(X:DynMatrixDouble; Y: integer):double; stdcall; external 'Array_dll.dll' name 'mainFunction';
<>这个代码工作得很好,变量的值在程序和DLL之间传输,但是当我把一个在MATLAB中输入的2D数组转换成DLL或C++的函数时,它就不再像上面的代码,这是:

double calc_det(int64m_T n, const emxArray_real_T *arr)
似乎我应该在Delphi中以“emxArray_real_T”类型创建2D双数组变量并传递给DLL。 我搜索并访问了以下链接: 但是我找不到我的问题的答案。我的问题是如何在Delphi中为2D数组定义“emxArray_real_t”类型并将其发送到dll? 谁能帮我把它做好吗?
谢谢。

在第一个方法中,你已经将C++ <代码> Int64 <代码>转换成Delphi的代码>整数< /C>类型,后者是32位签名类型,而与64位签署的<>代码>如果
length
的值超过有符号32位整数的最大值,则该值将中断。对于您的问题,C++头文件应该有一个定义:<代码>谷歌搜索会找到定义
typedef struct{uint32_T chunks[2];}int64m_T,这就是您需要在Delphi中复制的结构。感谢您的响应,但我想知道如何将Delphi中的2D双数组转换为emxArray_real_T,因为我应该将数组数据传递到此DLL。我应该在delphi中制作一个类似emxArray_real_T结构的记录,但是如何将我的数组转换成这个记录呢?您需要了解这个结构是什么。看看Matlab文档。