C# 利用P/Invoke调用PMAC的Pcomm32.dll, 函数字符串返回值为空

beihanggl 2008-07-14 02:23:59
大家帮我看看,这是利用P/Invoke委托连接PComm32.dll动态连接库,向一个PMAC设备发送指令的语句,向下发送能够成功,但返回值应该在buf值,但就是没有怎么回事?字符串buf为空,急等调试,谢谢各位高手,在线等
PMAC的PComm32.dll中函数原形为:long PMACGETRESPONSEA(DWORD dwDevice,PCHAR response,UINT maxchar,PCHAR command)

C#代码如下
namespace aaa
{
public delegate Int32 Delegate_GetResponsePmac(UInt32 dwDevice, string response, UInt32 maxchar, string command);//20080713

public class bbb: Form
{
dld test1 = new dld();
Delegate_GetResponsePmac GetResponsePmac;

private bbb_load
{
test1.LoadDll("PComm32.dll");
IntPtr GetResponsePmacAddress = test1.LoadFun("PmacGetResponseA");
GetResponsePmac = Marshal.GetDelegateForFunctionPointer(GetResponsePmacAddress, typeof(Delegate_GetResponsePmac)) as
}

private void button_click(object sender, EventArgs e)
{

string buf = "";
Int32 temp = GetResponsePmac(0, buf, 10, comboBox_Command.Text.ToString());
}
}
}
...全文
211 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
beihanggl 2008-07-14
  • 打赏
  • 举报
回复
我在通信类dld中进行了字符集类型强行指定,可还是不行,大家帮帮我吧
class dld
{
[DllImport("kernel32.dll",CharSet=CharSet.Ansi)]
internal static extern IntPtr LoadLibrary(string lpFileName);
[DllImport("kernel32.dll",CharSet=CharSet.Ansi)]
internal static extern IntPtr GetProcAddress(IntPtr hModule, string lpProcName);
[DllImport("kernel32.dll",CharSet=CharSet.Ansi)]
public static extern bool FreeLibrary(IntPtr hModule);
}
beihanggl 2008-07-14
  • 打赏
  • 举报
回复
还在吗?您能不能在详细讲一下,我是默认的charset,不是说默认情况下就是ansi字符吗?谢谢您了
  • 打赏
  • 举报
回复
指定字符集为Ansi

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧