求助:调用C++的dll报错。无效的托管/非托管类型组合(Int/UInt 必须与 SysInt 或 SysUInt 成对出现)。

魔力末 2010-11-02 11:47:59
函数原型:
HANDLE WINAPI OpenDisk(char cDrive, const unsigned char *pucLicenseKey = NULL);
我的调用是这么写的!
[DllImport("SDK.dll")]
public static extern void OpenDisk(byte diskName);

报的错误 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

改成
public static extern IntPtr OpenDisk(IntPtr diskName, [MarshalAs(UnmanagedType.U2)]IntPtr c);
报错:
无法封送处理“parameter #2”: 无效的托管/非托管类型组合(Int/UInt 必须与 SysInt 或 SysUInt 成对出现)。

请帮忙看看啊。实在找不到办法。不知道是哪里的问题。。
...全文
807 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
魔力末 2010-11-02
  • 打赏
  • 举报
回复
我试了两遍都放了,还是一样的结果
wangke_1987 2010-11-02
  • 打赏
  • 举报
回复
你的dll文件放哪了 系统根目录 还是程序根目录 最好两边都放

110,538

社区成员

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

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

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