社区
C#
帖子详情
DllImport传参
乖紫
2012-09-25 08:30:34
引用c++的一个dll,有一函数原型是getJumbIcon(CONST TCHAR *filePath),c#里参数类型应该怎么定义,传的是字符串
...全文
229
12
打赏
收藏
DllImport传参
引用c++的一个dll,有一函数原型是getJumbIcon(CONST TCHAR *filePath),c#里参数类型应该怎么定义,传的是字符串
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
threenewbee
2012-09-27
打赏
举报
回复
不是告诉你了么,成员函数不行。
乖紫
2012-09-25
打赏
举报
回复
[Quote=引用 10 楼 的回复:]
[DllImport("DLL文件名.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Auto)]
返回类型 getJumbIcon([MarshalAs(UnmanagedType.LPTStr)]string filePath)
[/Quote]
还是这个错误,用CallingConvention.Cdecl就出现这个错误
此错误可能是 CLR 中的 bug,或者是用户代码的不安全部分或不可验证部分中的 bug。此 bug 的常见来源包括用户对 COM-interop 或 PInvoke 的封送处理错误,这些错误可能会损坏堆栈。
iyomumx
2012-09-25
打赏
举报
回复
[DllImport("DLL文件名.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Auto)]
返回类型 getJumbIcon([MarshalAs(UnmanagedType.LPTStr)]string filePath)
乖紫
2012-09-25
打赏
举报
回复
[Quote=引用 6 楼 的回复:]
C++的成员函数不能这么使用,事实上成员函数还有一个隐藏的this指针,导致参数不匹配。
你得导出一个全局函数。
[/Quote]
我不懂,反正是别人自己写的,里边就这一个函数。
乖紫
2012-09-25
打赏
举报
回复
[Quote=引用 4 楼 的回复:]
是string
LPCTSTR =CONST TCHAR *->String C#
LPTSTR= -> char *->[MarshalAs(UnmanagedType.LPTStr)] string (C#)
[/Quote]
额 写的什么啊 囧
乖紫
2012-09-25
打赏
举报
回复
[Quote=引用 3 楼 的回复:]
[DllImport("dll.dll", CallingConvention = CallingConvention.Cdecl)]
由于默认一般是Winapi,在桌面平台上等于StdCall,如果出现堆栈不平衡,一般表示dll导出函数使用cdecl调用约定。
[/Quote]
不行
此错误可能是 CLR 中的 bug,或者是用户代码的不安全部分或不可验证部分中的 bug。此 bug 的常见来源包括用户对 COM-interop 或 PInvoke 的封送处理错误,这些错误可能会损坏堆栈。
threenewbee
2012-09-25
打赏
举报
回复
C++的成员函数不能这么使用,事实上成员函数还有一个隐藏的this指针,导致参数不匹配。
你得导出一个全局函数。
蔡袅
2012-09-25
打赏
举报
回复
[Quote=引用 3 楼 的回复:]
[DllImport("dll.dll", CallingConvention = CallingConvention.Cdecl)]
由于默认一般是Winapi,在桌面平台上等于StdCall,如果出现堆栈不平衡,一般表示dll导出函数使用cdecl调用约定。
[/Quote]楼上说的也是一种情况
蔡袅
2012-09-25
打赏
举报
回复
是string
LPCTSTR =CONST TCHAR *->String C#
LPTSTR= -> char *->[MarshalAs(UnmanagedType.LPTStr)] string (C#)
iyomumx
2012-09-25
打赏
举报
回复
[DllImport("dll.dll",
CallingConvention = CallingConvention.Cdecl
)]
由于默认一般是Winapi,在桌面平台上等于StdCall,如果出现堆栈不平衡,一般表示dll导出函数使用cdecl调用约定。
乖紫
2012-09-25
打赏
举报
回复
[Quote=引用 1 楼 的回复:]
getJumbIcon(string filePath)
[/Quote]
不行
对 PInvoke 函数“MyStart!MyStart.Data::getJumbIcon”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。
threenewbee
2012-09-25
打赏
举报
回复
getJumbIcon(string filePath)
jedis示例代码压缩包
jedis示例代码
高分课程设计 QT5.7+Sqllite数据库小系统源码+部署文档+全部数据资料
【资源说明】 高分课程设计 QT5.7+Sqllite数据库小系统源码+部署文档+全部数据资料 可实现数据库的可视化操作:增、删、改、查.zip 【备注】 1、该项目是高分毕业设计项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过mac/window10/11/linux测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(如软件工程、计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
中文文本分类 传统机器学习+深度学习.zip
中文文本分类 传统机器学习+深度学习
Linux学习笔记4-点亮LED灯(汇编裸机)程序
Linux学习笔记4---点亮LED灯(汇编裸机)程序
英特尔杯软创大赛RCDancer项目组工程文件夹.zip
英特尔杯软创大赛RCDancer项目组工程文件夹
C#
110,535
社区成员
642,575
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章