我试图在 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);
我有什么东西不见了吗?