错误提示:
对 PInvoke 函数“client!client.MyExtRichTextBox+RichEditOle::CreateILockBytesOnHGlobal”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。
[DllImport("ole32.dll", PreserveSig=false)]
internal static extern int CreateILockBytesOnHGlobal(IntPtr hGlobal, bool fDeleteOnRelease, [Out] out ILockBytes ppLkbyt); [DllImport("ole32.dll")]
static extern int StgCreateDocfileOnILockBytes(ILockBytes plkbyt, uint grfMode,
uint reserved, out IStorage ppstgOpen); public void InsertControl(Control control)
{
if (control == null)
return; Guid guid = Marshal.GenerateGuidForType(control.GetType()); //-----------------------
ILockBytes pLockBytes;
CreateILockBytesOnHGlobal(IntPtr.Zero, true, out pLockBytes); IStorage pStorage;
StgCreateDocfileOnILockBytes (pLockBytes, (uint)(STGM.STGM_SHARE_EXCLUSIVE|STGM.STGM_CREATE|STGM.STGM_READWRITE), 0, out pStorage);
IOleClientSite pOleClientSite;
this.IRichEditOle.GetClientSite(out pOleClientSite);
以上是一个关于QQ聊天的一段C#程序,我从网上找了一个扩展的richtextbox,可以插入图片,上面代码中的InsertControl()方法就是实现的可以向其中插入图片,可以为什么当插入图片是出现上面的错误啊?红色部分是出现错误的位置,请问该如何改正啊?
对 PInvoke 函数“client!client.MyExtRichTextBox+RichEditOle::CreateILockBytesOnHGlobal”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。
[DllImport("ole32.dll", PreserveSig=false)]
internal static extern int CreateILockBytesOnHGlobal(IntPtr hGlobal, bool fDeleteOnRelease, [Out] out ILockBytes ppLkbyt); [DllImport("ole32.dll")]
static extern int StgCreateDocfileOnILockBytes(ILockBytes plkbyt, uint grfMode,
uint reserved, out IStorage ppstgOpen); public void InsertControl(Control control)
{
if (control == null)
return; Guid guid = Marshal.GenerateGuidForType(control.GetType()); //-----------------------
ILockBytes pLockBytes;
CreateILockBytesOnHGlobal(IntPtr.Zero, true, out pLockBytes); IStorage pStorage;
StgCreateDocfileOnILockBytes (pLockBytes, (uint)(STGM.STGM_SHARE_EXCLUSIVE|STGM.STGM_CREATE|STGM.STGM_READWRITE), 0, out pStorage);
IOleClientSite pOleClientSite;
this.IRichEditOle.GetClientSite(out pOleClientSite);
以上是一个关于QQ聊天的一段C#程序,我从网上找了一个扩展的richtextbox,可以插入图片,上面代码中的InsertControl()方法就是实现的可以向其中插入图片,可以为什么当插入图片是出现上面的错误啊?红色部分是出现错误的位置,请问该如何改正啊?
解决方案 »
- 悲剧了,我的方法转不回去了......
- C#重新来问一下关于读取超大文本文件的问题
- DataGridView 如何绑定 数组list
- 有关更改ACCESS数据库问题
- treeview上节点的查询问题
- [10分] 文本文件里的一个换行在C#里表示为什么?
- 求一个查询方案
- 在线等,求一SQL语句,谢谢
- “本版我的问题”原来怎么不见了,你们都是这样么?
- 请问在 C#后台程序如何定义 打开页面的方式的打开地址??????????????
- 比如,有一个Text1, button1,button2,button3,button4怎么样设置button4为按回车后自动触发的事件的button按钮呢
- 求证则表达式一个
1.Step1- Change function declaration
[DllImport("ole32.dll", PreserveSig=false)]
public static extern ILockBytes CreateILockBytesOnHGlobal(HandleRef hGlobal, bool fDeleteOnRelease);
2.Step2- Call function
ILockBytes pLockBytes = CreateILockBytesOnHGlobal(new HandleRef(null, IntPtr.Zero), true);
将其改为[DllImport("ole32.dll", PreserveSig=true)]则可