c# callback 问题(立即给分)
我在c#里调用c++dll中的函数SetMessageProcessCallback(IntPtr pUserObject_, delegateSetMessage pfUserMessageProcessFunc_);我向这个函数中传了两个参数:this.Handle 和 delegateCallback1, 一个是form地址,一个是委托函数。
当程序启动后,运行到回调函数中时,就报错误:an unhandled win32 exception in 'ProprioWare.vshost.exe',
请高手帮忙。
------解决方案--------------------this.Handle你直接传this看看
------解决方案--------------------怀疑lz是不是散分的,这个问题问过多少遍了,你的前边几个帖子我都看过,你的代码写的不对,你的回调函数有2个参数,你写的回调函数没有参数,不出错才怪,你要把你用到的函数和结构体的C++源代码贴出来,给你翻译个完整版本就好了,有一次贴得比较全了,就是少一个什么MSG的也不知道什么类型的数据,怀疑是结构体,那你也要把这个翻译好,不然怎么弄你也过不去。
------解决方案--------------------你的C++代码里边的AMC_MESG就翻译成byte了?你觉得正确吗?你把C++里的AMC_MESG确切定义发出来好不好,你为了这个问题发了不下5个帖子了,就是不发这个东西的类型定义,也不知道你想怎么混过这个东西的定义。
------解决方案--------------------
声明原型
C# 复制代码
// Declares a class member for each structure element.
[ StructLayout( LayoutKind.Sequential )]public class SystemTime
{
public ushort year;
…
public ushort milliseconds;
}
public class LibWrap
{
// Declares a managed prototype for the unmanaged function.
[ DllImport( "Kernel32.dll" )]
public static extern void GetSystemTime( [In,Out] SystemTime st );
}
调用函数
C# 复制代码
public class App
{
public static void Main()
{
SystemTime st = new SystemTime();
LibWrap.GetSystemTime( st );
Console.Write( "The Date and Time is: " );
…
}
}
传递类的例子,特别注意红字部分