我有一个用 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. out pData: PChar 2. const pDataLen(这是返回的数据长度)
VB DLL 的手册说在调用函数之前保留内存并在函数完成后释放内存很重要。20 个字符应该足够了。
有人可以给我一个提示如何调用该函数吗?当我简单地使用“字符串”时,我得到一个异常:发生类型 System.AccesViolationException 的未处理异常。附加信息:试图读取或写入受保护的内存。这通常表明其他内存已损坏。
感谢帮助。