| 发表于:2007-01-30 10:41:03 楼主 |
各位大哥,我用vc做了一个dll,其中有一个函数是这样的: int _stdcall gsmparsemessagelist(sm_param* pmsg) { …………………… } 上面定义的sm_param结构在c#中的定义如下: public struct sm_param { [marshalas(unmanagedtype.byvaltstr, sizeconst = 16)] public string sca; [marshalas(unmanagedtype.byvaltstr, sizeconst = 16)] public string tpa; public char tp_pid; public char tp_dcs; [marshalas(unmanagedtype.byvaltstr, sizeconst = 16)] public string tp_scts; [marshalas(unmanagedtype.byvaltstr, sizeconst = 160)] public string tp_ud; short index; }; 我定义了 sm_param [] msg=new sm_param [10] 这样一个数组,但是因为 c#默认不支持指针的,我要以传址的方式传递一个结构数组,在dll如何声名?之前我试过 这样: [dllimport( "d:\\dll\\temp\\debug\\mmt.dll ")] public static extern int gsmparsemessagelist (ref sm_param [] msg); 但是这就相当于传递了一个二级指针了,只有将dll中的int _stdcall gsmparsemessagelist(sm_param* pmsg)改为int _stdcall gsmparsemessagelist(sm_param** pmsg)才能正常运行,但我只要以传址的方式传递一个结构数组到gsmparsemessagelist(sm_param* pmsg)中,请问我要怎么做?希望大家帮帮忙,小弟感激不尽,谢谢! |
|
|
|
|