m文件如下:其中a,b,y均可是矩阵
function y=shili(a,b)
y=a+b;用matcom编译成dll,c的申明如下
int DLLX _stdcall shili1_v(char* emsg, int nlhs, Mm* plhs[], int nrhs, const Mm* prhs[])在delphi里想把两个数组a,b传进去,然后得到结果数组y,
请问怎么在delphi里实现。谢谢

解决方案 »

  1.   

    MATLAB没有PASCAL的接口,
    在C中可以用它的文件的
      

  2.   

    就是用c编译成的dll,没有参数的时候能成功的调用,但是有了几个
    参数以后,调用就无法达到想要的效果了,真不知这个参数怎么设置,
    sigh!
      

  3.   

    检查你的参数传递预定,stdcall,还是c的?你最好在delphi中声明为c方式的调用。
    1)我看你申明了mm类型,只要你在delphi中用同样的类型去匹配,是可以做到的,比如 你的mm中有int,你就用Longint来代替,
    2)关于数组的传递: char*可以转换成pchar;mm[],如果你在dll中装配一下,完全可以避免传数组的问题。delphi中只传递单个mm,在dll中组成数组,再用一个start_DLLX _stdcall shili1_v来触发你的动作,不就可以了吗?如果一定要传递数组,可以传数组指针。你可以参照一下一下代码使用数组指针:
    procedure TForm1.Button1Click(Sender: TObject);
    type
      Tb = array[0..100] of byte;
      Pb= ^TB;
    var
      b: tb;
      bp :pb;
    begin
      b[0] := 12;
      bp := @b;
      showmessage(inttostr(bp^[0]));
    end;
      

  4.   

    如果你能发过来代码,我可以帮你看一下,但我没有装matlab,如果可以直接运行,我可以帮你调一调。
      

  5.   

    怎么解决的 ?
    很多的工程软件 比如matlab,UG等都是 提供了c++的接口儿没有
    提供delphi或者vb的接口 请问问题怎么解决呢?