在C#中调用VisualBasic DLL但是如何替换Pchar?

时间:2016-09-27 08:32:23

标签: c# string pointers pchar

我有一个用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的未处理异常。 附加信息:尝试读取或写入受保护的内存。这通常表明其他内存已损坏。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

你试过指针??

setTimezone(DatatypeConstants.FIELD_UNDEFINED); 

答案 1 :(得分:-1)

解决方案是使用" ref string"而不是" out string"。