C#调用C++DLL时遇到的PInvoke 函数的调用导致堆栈不对称问题
来源:互联网 发布:adobe全部软件介绍 编辑:程序博客网 时间:2024/05/22 07:55
解决:对 PInvoke 函数的调用导致堆栈不对称问题
问题描述:
在使用托管代码调用非托管代码时,发生“对 PInvoke 函数“UseTwiHikVisionDllTest!UseTwiHikVisionDllTest.TwiHikVision::GetFirstPic”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。”
解决方法:
添加属性:CallingConvention=CallingConvention.Cdecl
如:
[DllImport("TwiHikVision.dll", EntryPoint="GetFirstPic",CallingConvention=CallingConvention.Cdecl)]
public static extern string GetFirstPic(string videoFileName, string exportFilePath);
网络参考可能原因:
http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/b0637998-dc89-4ff9-b59d-5ad262a48bc6
You need to set the calling convention. The default convention (stdcall) is not correct, which will cause P/Invoke stack imbalances.
For example, your first call should look like:
[DllImport("Service.dll", CallingConvention=CallingConvention.Cdecl)] static private extern IntPtr CallCreateClass();
By default, C and C++ use cdecl - but marshalling uses stdcall to match the Windows API.
0 0
- C#调用C++DLL时遇到的PInvoke 函数的调用导致堆栈不对称问题
- PInvoke调用导致堆栈不对称 c#调用C++win32非托管dll的问题深度分析
- PInvoke调用导致堆栈不对称 c#调用C++win32非托管dll的问题深度分析
- PInvoke调用导致堆栈不对称 c#调用C++win32非托管dll的问题深度分析
- 对 PInvoke 函数的调用导致堆栈不对称问题
- 解决:对 PInvoke 函数的调用导致堆栈不对称问题
- 对PInvoke函数的调用导致堆栈不对称问题
- 解决:对 PInvoke 函数的调用导致堆栈不对称问题
- 解决:对 PInvoke 函数的调用导致堆栈不对称问题
- 解决:对 PInvoke 函数的调用导致堆栈不对称问题
- 对PInvoke函数的调用导致堆栈不对称问题
- 解决:对 PInvoke 函数的调用导致堆栈不对称问题
- 对 PInvoke 函数的调用导致堆栈不对称问题
- 对 PInvoke 函数的调用导致堆栈不对称的解决方法
- 对 PInvoke 函数“”的调用导致堆栈不对称
- 对 PInvoke 函数“”的调用导致堆栈不对称
- 对PInvoke函数...的调用堆栈不对称
- C#调用C DLL:调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配
- js数组排序
- Linux运维学习大纲
- JavaScript正则表达式
- S5pv210下 HDMI 接口在 Linux 3.0.8 内核下的驱动解析
- wampserver 修改apache端口,phpmyadmin,
- C#调用C++DLL时遇到的PInvoke 函数的调用导致堆栈不对称问题
- 三年我选择了回到自己喜欢的技术工作
- 面向对象的基本特征和多种设计原则详解
- java中几种引用类型的定义和区别。强引用,软引用,弱引用,虚引用
- Calendar日期处理
- Maven学习篇(二)---Maven的安装及配置
- python2.7 链接MySQL 在Eclipse PyDev下 windows平台
- 第四十讲 项目3 兔子和鸡的简单问题
- 在vs2008下编译openssl用sha256加密