0

我试图在 c++ dll 中调用一个函数,但什么也没发生,这就是交易:

函数是这样定义的

int BuscaCurpsG(char *archivoOrig, int tipoDocumento, SAFEARRAY **arr_CURPS) ;

arr_CURPS 是这样的结构

typedef struct struct_curps
{
    unsigned short curp[19],
    archivokey[256],
    archivocer[256],
    password[256];
} struct_curps;

我的问题是如何在 C# 中定义结构数据类型。我在 vb6 中有一个例子,一切都很好:

 Public Type registro_CURPG
     curp As String * 19
     archivokey As String * 256
     archivocer As String * 256
     password As String * 256
 End Type

并且函数被声明

Declare Function BuscaCurpsG Lib "sgenc32" Alias "_BuscaCurpsG@12" (ByVal strArchKEY As String, ByVal tipo As Long, ByRef CURPS() As registro_CURPG) As Long

如何在 c# 中声明我的结构的数据类型?我不能使用固定长度的字符串...

对不起我的英语,我尽力做到最好。

谢谢你。


编辑


我声明了结构

[StructLayout(LayoutKind.Sequential), Serializable]
struct registro_CURPG
{
    [MarshalAs(UnmanagedType.ByValTStr,SizeConst=19)]
    public string curp;

   [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
    public string archivocer;

    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
    public string archivokey;

    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
    public string password;
}

以及如何在 c# 中声明该函数?我懂了

[DllImport("sgenc32.dll")] private static extern int BuscaCurpsG(string ArchivoOriginal, int TipoDocumento, [In(),Out()] ref registro_CURPG[] CURPS);

我有什么东西不见了吗?

4

0 回答 0