我有一个用VisualBasic编写的旧DLL,需要在C#中调用这些函数。 已经运行的15个函数中的14个(使用控制台项目测试)。剩下的函数有一个参数PChar,我不知道如何在C#中调用它。
工作函数如下所示:
[DllImport("C:\\DLL\\visualbasic.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
public static extern int command(out UInt32 pNumber);
public void Executecommand(out UInt32 pNumber, out int Res)
{
Res = command(out pNumber);
}
不工作的功能有两个参数: 1.出pData:PChar 2. const pDataLen(这是返回的数据长度)
VB DLL的手册说,在调用函数之前保留内存并在函数完成后释放内存非常重要。 20个字符就足够了。
有人可以给我一个如何调用该函数的提示吗?当我只使用“字符串”然后我得到一个例外: 发生类型System.AccesViolationException的未处理异常。 附加信息:尝试读取或写入受保护的内存。这通常表明其他内存已损坏。
感谢您的帮助。
答案 0 :(得分:0)
你试过指针??
setTimezone(DatatypeConstants.FIELD_UNDEFINED);
答案 1 :(得分:-1)
解决方案是使用" ref string"而不是" out string"。